BAT批处理文件语法转载

上传人:ni****g 文档编号:500419531 上传时间:2024-02-06 格式:DOC 页数:17 大小:44.66KB
返回 下载 相关 举报
BAT批处理文件语法转载_第1页
第1页 / 共17页
BAT批处理文件语法转载_第2页
第2页 / 共17页
BAT批处理文件语法转载_第3页
第3页 / 共17页
BAT批处理文件语法转载_第4页
第4页 / 共17页
BAT批处理文件语法转载_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《BAT批处理文件语法转载》由会员分享,可在线阅读,更多相关《BAT批处理文件语法转载(17页珍藏版)》请在金锄头文库上搜索。

1、BAT批处理文件语法 1 2 转载BAT批处理文件语法(1-2)(转载)2011/06/12 10:55遗憾的是,win9x和DOS下均不支持shift的逆操作.只有在nt内核命令行环境下,shift才支持/n参数,可以以第一参数为基准返复移动起始指针.特殊命令if goto choice for是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。一、if是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。有三种格式:1、ifnot参数=字符串待执行的命令参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。例:if%1

2、=aformat a:=if的命令行帮助中关于此点的描述为:IFNOTstring1=string2 command在此有以下几点需要注意:1.包含字符串的双引号不是语法所必须的,而只是习惯上使用的一种防空字符2.string1未必是参数,它也可以是环境变量,循环变量以及其他字符串常量或变量mand不是语法所必须的,string2后跟一个空格就可以构成一个有效的命令行=2、ifnotexist路径文件名待执行的命令如果有指定的文件,则条件成立,运行命令,否则运行下一句。如:if exist c:config.sys type c:config.sys表示如果存在c:config.sys文件,则

3、显示它的内容。*注*也可以使用以下的用法:if exist command device是指DOS系统中已加载的设备,在win98下通常有:AUX,PRN,CON,NUL COM1,COM2,COM3,COM4 LPT1,LPT2,LPT3,LPT4 XMSXXXX0,EMMXXXX0 A:B:C:.,CLOCK$,CONFIG$,DblBuff$,IFS$HLP$具体的内容会因硬软件环境的不同而略有差异,使用这些设备名称时,需要保证以下三点:1.该设备确实存在(由软件虚拟的设备除外)2.该设备驱动程序已加载(aux,prn等标准设备由系统缺省定义)3.该设备已准备好(主要是指a:b:.,co

4、m1.,lpt1.等)可通过命令mem/d|finddevice/i来检阅你的系统中所加载的设备另外,在DOS系统中,设备也被认为是一种特殊的文件,而文件也可以称作字符设备;因为设备(device)与文件都是使用句柄(handle)来管理的,句柄就是名字,类似于文件名,只不过句柄不是应用于磁盘管理,而是应用于内存管理而已,所谓设备加载也即指在内存中为其分配可引用的句柄.=3、if errorlevel数字待执行的命令很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必

5、须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。如if errorlevel 2goto x2=注=返回值从大到小的顺序排列不是必须的,而只是执行命令为goto时的习惯用法,当使用set作为执行命令时,通常会从小到大顺序排列,比如需将返回码置入环境变量,就需使用以下的顺序形式:if errorlevel 1set el=1 if errorlevel 2set el=2 if errorlevel 3set el=3 if errorlevel 4set el=4 if errorlevel 5set el=5当然,也可以使用以下循环来替代,原理是一

6、致的:for%e in(1 23 45 67 8.)do if errorlevel%e set el=%e更高效简洁的用法,可以参考我写的另一篇关于获取errorlevel的文章出现此种现象的原因是,if errorlevel比较返回码的判断条件并非等于,而是大于等于.由于goto的跳转特性,由小到大排序会导致在较小的返回码处就跳出;而由于set命令的重复赋值特性,由大到小排序会导致较小的返回码覆盖较大的返回码.另外,虽然if errorlevel=数字command也是有效的命令行,但也只是解释命令行时将=作为命令行切分符而忽略掉罢了=二、goto批处理文件运行到这里将跳到goto所指定的

7、标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。如:goto end:end echo this is the end标号用:字符串来定义,标号所在行不被执行。=编注label常被译为标签,但是这并不具有广泛的约定性.goto与:联用可实现执行中途的跳转,再结合if可实现执行过程的条件分支,多个if即可实现命令的分组,类似C中switch case结构或者Basic中的select case结构,大规模且结构化的命令分组即可实现高级语言中的函数功能.以下是批处理和C/Basic在语法结构上的对照:Batch C/Bas

8、ic goto&:goto&:goto&:&if if&else/if&elseif&endif goto&:&if.switch&case/select case goto&:&if&set&envar.function()/function(),sub()=三、choice使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice/?查看用法。choice的命令

9、语法(该语法为Windows 2003中choice命令的语法,其它版本的choice的命令语法与此大同小异):CHOICE/C choices/N/CS/T timeout/D choice/M text描述:该工具允许用户从选择列表选择一个项目并返回所选项目的索引。参数列表:/C choices指定要创建的选项列表。默认列表是YN。/N在提示符中隐藏选项列表。提示前面的消息得到显示,选项依旧处于启用状态。/CS允许选择分大小写的选项。在默认情况下,这个工具是不分大小写的。/T timeout做出默认选择之前,暂停的秒数。可接受的值是从0到9999。如果指定了0,就不会有暂停,默认选项会得到

10、选择。/D choice在nnnn秒之后指定默认选项。字符必须在用/C选项指定的一组选择中;同时,必须用/T指定nnnn。/M text指定提示之前要显示的消息。如果没有指定,工具只显示提示。/?显示帮助消息。ERRORLEVEL环境变量被设置为从选择集选择的键索引。列出的第一个选择返回1,第二个选择返回2,等等。如果用户按的键不是有效的选择,该工具会发出警告响声。如果该工具检测到错误状态,它会返回255的ERRORLEVEL值。如果用户按Ctrl+Break或Ctrl+C键,该工具会返回0的ERRORLEVEL值。在一个批程序中使用ERRORLEVEL参数时,将参数降序排列。示例:CHOIC

11、E/?CHOICE/C YNC/M确认请按Y,否请按N,或者取消请按C。CHOICE/T 10/C ync/CS/D yCHOICE/C ab/M选项1请选择a,选项2请选择b。CHOICE/C ab/N/M选项1请选择a,选项2请选择b。=编注=我列出win98下choice的用法帮助,已资区分Waits for the user to choose one of aset of choices.等待用户选择一组待选字符中的一个CHOICE/C:choices/N/S/T:c,nntext/C:choices Specifies allowable keys.Default is YN指定允

12、许的按键(待选字符),默认为YN/N Do not display choices and?at end of prompt string.不显示提示字符串中的问号和待选字符/S Treat choice keys as case sensitive.处理待选字符时大小写敏感/T:c,nn Default choice to cafter nn seconds在nn秒后默认选择c text Prompt string to display要显示的提示字符串ERRORLEVEL is set to offset of key user presses in choices.ERRORLEVEL被

13、设置为用户键入的字符在待选字符中的偏移值如果我运行命令:CHOICE/C YNC/M确认请按Y,否请按N,或者取消请按C。屏幕上会显示:确认请按Y,否请按N,或者取消请按C。Y,N,C?例:test.bat的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列):echo off choice/C dme/Mdefrag,mem,endif errorlevel 3goto end if errorlevel 2goto mem if errorlevel 1goto defrag:defrag c:dosdefrag goto end:mem mem goto e

14、nd:end echo good bye此批处理运行后,将显示defrag,mem,endD,M,E?,用户可选择d me,然后if语句根据用户的选择作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,批处理运行结束。四、for循环命令,只要条件符合,它将多次执行同一命令。语法:对一组文件中的每一个文件执行某个特定命令。FOR%variable IN(set)DO commandcommand-parameters%variable指定一个单一字

15、母可替换的参数。(set)指定一个或一组文件。可以使用通配符。command指定对每个文件执行的命令。command-parameters为特定命令指定参数或命令行开关。例如一个批处理文件中有一行:for%c in(*.bat*.txt)do type%c则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。=编注=需要指出的是,当()中的字符串并非单个或多个文件名时,它将单纯被当作字符串替换,这个特性再加上()中可以嵌入多个字符串的特性,很明显for可以被看作一种遍历型循环.当然,在nt/2000/xp/2003系列的命令行环境中,for被赋予了更多的特性,使之可以分析命令输出或者文件中的字符串,也有很多开关被用于扩展了文件替换功能.=批处理示例1.IF-EXIST 1)首先用记事本在C:建立一个test1.bat批处理文件,文件内容如下:echo off IF EXISTAU

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 模板/表格 > 财务表格

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号