批处理命令格式
批处理的见命令REM,ECHO,GOTO,CALL,PAUSE,IF

例:
PAUSE
6、IF
IF 条件判断语句,语法格式如下:
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
解释下:
[NOT]:将返回结果取反值,就是“如果没有”的意思
ERRORLEVEL:
是命令执行完成后返回的退出值
Number:
退出值的数字取值范围0~255,判断时值的排列顺序应该由大到小。返回的值大于等于指定的值时,条件成立
string1==string2:
string1和string2都为字符的数据,英文内字符的大小写将看作不同,这个条件中的等于号必须是两个(绝对相等的意思)
例:
:lable
REM 上面就是名为LABEL的标号
DIR C:\
DIR D:\
GOTO lable
REM 以上程序跳转标号LABEL处继续执行
咱们来看看结果:
4、CALL
CALL命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理
介绍命令
1、REM
REM是个注释命令,一般用来给程序加上注解,该命令后的内容在程序执行时,将不会被显示和执行。
例:REM 这个命令就是注释
这一句将不会被执行
2、ECHO
ECHO是一个回显命令,主要参数有OFF和ON。一般用ECHO MESSAGE来显示一个特定的消息。
例:
goto exit
:no
echo 变量不相等
批处理写法

基础部分:======================================================================一、基础语法:1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。
可以使用任何文本文件编辑工具创建和修改。
2.批处理是一种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for 循环。
3.批处理的编程能力远不如C语言等编程语言,也十分不规范。
4.每个编写好的批处理文件都相当于一个DOS的外部命令,把它所在的目录放到DOS搜索路径(path)中,即可在任意位置运行。
5.C:\AUTOEXEC.BAT 是每次系统启动时都会自动运行的,可以将每次启动时都要运行的命令放入该文件中。
6.大小写不敏感(命令符忽略大小写)7.批处理的文件扩展名为 .bat 或 .cmd。
8.在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe来运行该文件。
二、参数:1) 系统参数%SystemRoot% === C:\WINDOWS (%windir% 同样)%ProgramFiles% === C:\Program Files%USERPROFILE% === C:\Documents and Settings\Administrator (子目录有“桌面”,“开始菜单”,“收藏夹”等)%APPDATA% === C:\Documents and Settings\Administrator\Application Data%TEMP% === C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp (%TEM% 同样)%APPDATA% === C:\Documents and Settings\Administrator\Application Data%OS% === Windows_NT (系统)%Path% === %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem (原本的设置) %HOMEDRIVE% === C: (系统盘)%HOMEPATH% === \Documents and Settings\Administrator:: 枚举当前的环境变量setlocal enabledelayedexpansionFOR /F "usebackq delims==" %%i IN (`set`) DO @echo %%i !%%i!2) 传递参数给批处理文件%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。
bat批处理文件语法

批处理文件(也称为批处理脚本)是一种用于Windows 系统的脚本文件,其文件扩展名通常为`.bat`。
批处理文件可以包含一系列命令和操作,用于自动化执行一系列任务。
以下是一些常见的批处理文件语法:1. 命令行命令:批处理文件可以包含一系列的命令行命令,这些命令将按照脚本中的顺序依次执行。
REM 这是注释,使用REM 关键字echo "Hello, World!" // 输出文本到控制台dir // 列出当前目录的文件和子目录copy file1.txt file2.txt // 复制文件2. 变量和参数:批处理文件可以使用变量和命令行参数来存储和操作数据。
set name=John // 设置变量echo %name% // 使用变量echo %1 // 使用第一个命令行参数3. 控制流语句:批处理文件支持一些基本的控制流语句,如条件语句和循环语句。
if exist file.txt (echo "File exists") else (echo "File does not exist")for %%i in (1 2 3) do (echo %%i)4. 函数和子程序:批处理文件可以定义和调用函数和子程序。
:myFunctionecho "This is my function"goto :eofcall :myFunction5. 注释:使用`REM` 或者`::` 关键字可以添加注释。
REM 这是一条注释:: 这也是一条注释上述是一些常见的批处理文件语法,可以帮助你开始编写简单的批处理脚本来执行一系列的任务。
批处理文件语法非常灵活,可以实现自动化的文件操作、系统管理等任务。
批处理命令大全

的字符串的。 %i专门在for语句中得到说明,%j和%k是通过tokens=选项 专门得到说明的。您可以通过tokens=一行指定最多26个
符号,只要不试图说明一个高于字母'z'或'Z'的变数。请记 住,FOR变量名分大小写,是通用的;而且,同时不能有 52个以上都在使用中。 您还
可以在相邻字符串上使用FOR/F分析逻辑;方法是,用单 引号将括号之间的filenameset括起来。这样,该字符串会 被当作一个檔中的一个单一
程序执行完毕跳至标题exit处退出 gotoexit :exit Rem这里是程序的出口 2、IFstring1==string2c
ommand 检测当前变量的值做出判断 ECHOOFF IF%1==2gotono Echo变数相等! Gotoexit :no
echo变数不相等 gotoexit :exit 大家可以这样看效果C:>test.bat数字 3、IF[NOT]EXISTfi
部分:特殊的符号与批处理 在命令行下有些符号是不允许使用的但有些符号却有着特殊的意 义。 1、符号(@) @在批处理中的意思是关闭当前行
的回显。我们从上面知道用命令echooff可以关掉整个批 处理的命令回显但却不能不显示echooff这个命令。现在 我们在这个命令前加上@这样e
chooff这一命令就被@关闭了回显从而达到所有命令均不回 显得要求 2、符号(>) >的意思是传递并覆盖。他所起的作用是将运行后的回显结
D如果集中包含通配符,则指定与目录名匹配,而不与文 件名匹配。 /F从指定的文件中读取数据作为变量 eol=c-指一个行注释字符的结尾(就
一个) skip=n-指在檔开始时忽略的行数。 delims=xxx-指分隔符集。这个替换了空格和跳格键的默认分隔符 集。 tokens
批处理命令大全

1 echo 和@回显控制命令@ #关闭单行回显echo off #从下一行开始关闭回显@echo off #从本行开始关闭回显。
一般批处理第一行都是这个echo on #从下一行开始打开回显echo #显示当前是echo off 状态还是echo on 状态echo. #输出一个"回车换行",一般就是指空白行echo hello world #输出hello world"关闭回显"是指运行批处理文件时,不显示文件里的每条命令,只显示运行结果批处理开始和结束时,系统都会自动打开回显2 errorlevel程序返回码echo %errorlevel%每个命令运行结束,可以用这个命令行格式查看返回码用于判断刚才的命令是否执行成功默认值为0,一般命令执行出错会设errorlevel 为13 dir显示目录中的文件和子目录列表dir #显示当前目录中的文件和子目录dir /a #显示当前目录中的文件和子目录,包括隐藏文件和系统文件dir c: /a:d #显示C 盘当前目录中的目录dir c:\ /a:-d #显示C 盘根目录中的文件dir d:\mp3 /b/p #逐屏显示d:\mp3 目录里的文件,只显示文件名,不显示时间和大小dir *.exe /s显示当前目录和子目录里所有的.exe文件其中* 是通配符,代表所有的文件名,还一个通配符? 代表一个任意字母或汉字如c*.* 代表以 c 开头的所有文件?.exe 代表所有文件名是一个字母的.exe文件如果指定的目录或文件不存在,将返回errorlevel 为1每个文件夹的dir 输出都会有2个子目录. 和... 代表当前目录.. 代表当前目录的上级目录dir . #显示当前目录中的文件和子目录dir .. #显示当前目录的上级目录中的文件和子目录其它参数可参考dir /?4 cd更改当前目录cd mp3 #进入当前目录中的mp3 目录cd .. #进入当前目录中的上级目录cd\ #进入根目录cd #显示当前目录cd /d d:\mp3 #可以同时更改盘符和目录cd\"Documents and Settings"\All users文件名带空格,可以不加引号建议加上引号,因为有的时候不加引号会运行出错,如登录脚本如果更改到的目录不存在,则出错返回errorlevel=15 md创建目录md abc #在当前目录里建立子目录abcmd d:\a\b\c #如果d:\a 不存在,将会自动创建6 rd删除目录rd abc #删除当前目录里的abc 子目录,要求为空目录rd /s/q d:\temp #删除d:\temp 文件夹及其子文件夹和文件,不需要按Y 确认7 del删除文件del d:\test.txt #删除指定文件,不能是隐藏、系统、只读文件del *.*删除当前目录里的所有文件,不包括隐藏、系统、只读文件,要求按Y 确认del /q/a/f d:\temp\*.*删除d:\temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录del /q/a/f/s d:\temp\*.*删除d:\temp 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录8 ren文件重命名ren 1.txt 2.bak #把1.txt 更名为2.bakren *.txt *.ini #把当前目录里所有.txt文件改成.ini文件ren d:\temp tmp #支持对文件夹的重命名9 cls清屏10 type显示文件内容type c:\boot.ini #显示指定文件的内容,程序文件一般会显示乱码type *.txt #显示当前目录里所有.txt文件的内容11 copy拷贝文件copy c:\test.txt d:\复制c:\test.txt 文件到d:\copy c:\test.txt d:\test.bak复制c:\test.txt 文件到d:\ ,并重命名为test.bakcopy c:\*.*复制c:\ 所有文件到当前目录,不包括隐藏文件和系统文件不指定目标路径,则默认目标路径为当前目录copy con test.txt从屏幕上等待输入,按Ctrl+Z 结束输入,输入内容存为test.txt文件con代表屏幕,prn代表打印机,nul代表空设备copy 1.txt + 2.txt 3.txt合并1.txt 和 2.txt 的内容,保存为3.txt 文件如果不指定3.txt ,则保存到1.txtcopy test.txt +复制文件到自己,实际上是修改了文件日期12 title设置cmd窗口的标题title 新标题#可以看到cmd窗口的标题栏变了13 ver显示系统版本14 label 和vol设置卷标vol #显示卷标label #显示卷标,同时提示输入新卷标label c:system #设置C盘的卷标为system15 pause暂停命令运行该命令时,将显示下面的消息:请按任意键继续. . .一般用于看清楚屏幕上显示的内容16 rem 和::注释命令注释行不执行操作17 date 和time日期和时间date #显示当前日期,并提示输入新日期,按"回车"略过输入date/t #只显示当前日期,不提示输入新日期time #显示当前时间,并提示输入新时间,按"回车"略过输入time/t #只显示当前时间,不提示输入新时间18 goto 和:跳转命令:label #行首为:表示该行是标签行,标签行不执行操作goto label #跳转到指定的标签那一行19 find (外部命令)查找命令find "abc" c:\test.txt在c:\test.txt 文件里查找含abc 字符串的行如果找不到,将设errorlevel 返回码为1find /i "abc" c:\test.txt查找含abc 的行,忽略大小写find /c "abc" c:\test.txt显示含abc 的行的行数20 more (外部命令)逐屏显示more c:\test.txt #逐屏显示c:\test.txt 的文件内容21 tree显示目录结构tree d:\ #显示D盘的文件目录结构22 &顺序执行多条命令,而不管命令是否执行成功c: & cd\ & dir /w相当于把下面3行命令写到1行去了c:cd\dir /w23 &&顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令f: && cd\ && dir >c:\test.txt注意如果f盘不存在,那么后面2条命令将不会执行find "ok" c:\test.txt && echo 成功如果找到了"ok"字样,就显示"成功",找不到就不显示24 ||顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令f: || e:如果有f盘就不进入e盘find "ok" c:\test.txt || echo 不成功如果找不到"ok"字样,就显示"不成功",找到了就不显示25 |管道命令前一个命令的执行结果输出到后一个命令dir *.* /s/a | find /c ".exe"管道命令表示先执行dir 命令,对其输出的结果执行后面的find 命令该命令行结果:输出当前文件夹及所有子文件夹里的.exe文件的个数type c:\test.txt|more这个和more c:\test.txt 的效果是一样的26 > 和>>输出重定向命令> 清除文件中原有的内容后再写入>> 追加内容到文件末尾,而不会清除原有的内容主要将本来显示在屏幕上的内容输出到指定文件中指定文件如果不存在,则自动生成该文件echo hello world>c:\test.txt生成c:\test.txt文件,内容为hello world这个格式在批处理文件里用得很多,可以生成.reg .bat .vbs 等临时文件type c:\test.txt >prn屏幕上不显示文件内容,转向输出到打印机echo hello world>con在屏幕上显示hello world,实际上所有输出都是默认>con 的copy c:\test.txt f: >nul拷贝文件,并且不显示"文件复制成功"的提示信息,但如果f盘不存在,还是会显示出错信息copy c:\test.txt f: >nul 2>nul不显示"文件复制成功"的提示信息,并且f盘不存在的话,也不显示错误提示信息echo ^^W ^> ^W>c:\test.txt生成的文件内容为^W > W^ 和> 是控制命令,要把它们输出到文件,必须在前面加个^ 符号27 <从文件中获得输入信息,而不是从屏幕上一般用于date time label 等需要等待输入的命令@echo offecho 2005-05-01>temp.txtdate <temp.txtdel temp.txt这样就可以不等待输入直接修改当前日期28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*命令行传递给批处理的参数%0 批处理文件本身%1 第一个参数%9 第九个参数%* 从第一个参数开始的所有参数在C盘根目录新建test.bat,内容如下:@echo offecho %0echo %1echo %2echo %*运行cmd,输入c:\test.bat "/a" /b /c /d可以看出每个参数的含意修改test.bat内容如下@echo offecho %1echo %~1echo %0echo %~f0echo %~d0echo %~p0echo %~n0echo %~x0echo %~s0echo %~a0echo %~t0echo %~z0再运行cmd,输入c:\test.bat "/a" /b /c /d可以参照call/? 或for/? 看出每个参数的含意注意这里可以对文件进行日期比较和大小比较echo load "%%1" "%%2">c:\test.txt生成的文件内容为load "%1" "%2"批处理文件里,用这个格式把命令行参数输出到文件29 if判断命令if "%1"=="/a" echo 第一个参数是/aif /i "%1" equ "/a" echo 第一个参数是/a/i 表示不区分大小写,equ 和== 是一样的,其它运算符参见if/? if exist c:\test.bat echo 存在c:\test.bat文件if not exist c:\windows (echo 不存在c:\windows文件夹rem 有多条命令可用小括号括起来,称为"复合语句"rem 行前的空格是为了看起来条理清楚)if exist c:\test.bat (echo 存在c:\test.bat) else (echo 不存在c:\test.batrem else表示"否则",判断结果为假时执行其后的命令)30 setlocal 和endlocal设置"命令扩展名"和"延缓环境变量扩充"SETLOCAL ENABLEEXTENSIONS #启用"命令扩展名"SETLOCAL DISABLEEXTENSIONS #停用"命令扩展名"SETLOCAL ENABLEDELAYEDEXPANSION #启用"延缓环境变量扩充" SETLOCAL DISABLEDELAYEDEXPANSION #停用"延缓环境变量扩充" ENDLOCAL #恢复到使用SETLOCAL语句以前的状态"命令扩展名"默认为启用"延缓环境变量扩充"默认为停用批处理结束系统会自动恢复默认值可以修改注册表以禁用"命令扩展名",详见cmd /? 。
常见bat(批处理)命令的语法规则

常见bat(批处理)命令的语法规则最近由于在做cocos2d的项⽬,需要⽤到⼀些bat命令,在此做些记录。
bat命令⽤txt⽂本编辑就⾏,编辑完之后将后缀名改为bat即可运⾏。
先来⼀个最简单的例⼦:@echo offecho \"hello world!\"pause运⾏截图,在程序末尾单起⼀⾏,加上个pause可以暂停截图:⼀般⼀个bat命令单独成⾏,常见的bat命令有:1、REM 和 :: 给程序加上注释2、ECHO 和 @ echo会显⽰运⾏的内容,加@则不会在运⾏框中显⽰运⾏内容(会继续运⾏,只是不会显⽰)。
3、PAUSE 暂停4、ERRORLEVEL 命令运⾏结束,单独⼀⾏输⼊echo %errorlevel%会显⽰运⾏是否成功(成功0,失败1)5、TITLE 设置cmd窗⼝的标题,格式为title name#6、COLOR 改变窗⼝的颜⾊,格式为color 027、mode 配置系统设备配置系统设备,⽐如mode con cols=100 lines=40,意思为设置窗⼝的宽和⾼8、GOTO 和 : 跳转,⽤:XX构筑⼀个标记,⽤goto XX跳转到XX标记处9、FIND 在⽂件中搜索字符串10、START 批处理调⽤外部程序的命令(不理会外部运⾏状况,等到外部命令运⾏后才能继续运⾏),格式为start xxx(路径名)11、assoc 和 ftype ⽂件关联(⽬前没发现有什么⽤)12、pushd 和 popd 切换当前⽬录(⽤于不确定⽂件夹的情况,dos编程常⽤)13、CALL 在批处理的过程中调⽤另⼀个批处理,当另⼀个批处理执⾏完了后回调⾃⾝14、shift 更改批处理⽂件中可替换参数的位置15、IF 判断,回头详细研究16、setlocal 与变量延迟17、ATTRIB 显⽰或更改⽂件属性常⽤特殊符号1、@命令⾏回显屏蔽符2、%批处理变量引导符3、> 重定向符4、>>重定向符5、<、>、<& 重定向符6、|命令管道符7、^转义字符8、组合命令9、& 组合命令10、||组合命令11、\"\"字符串界定符12、, 逗号13、; 分号14、() 括号15、! 感叹号16、批处理中可能会见到的其它特殊标记符。
批处理语法大全

批处理语法大全
批处理是一种简单的程序,主要用于在DOS和Windows环境中执行一系列命令。
以下是批处理的基本语法和常用命令:
1. 批处理文件是一个“.bat”或“.cmd”结尾的文本文件,这个文件的每一行都是一条DOS命令。
可以使用任何文本文件编辑工具创建和修改。
2. 批处理中,可以使用if和goto来控制流程,也可以使用for循环。
3. echo命令:用于在命令提示符窗口中输出信息。
可以使用“”符号来抑制输出的回显。
4. echo off:关闭回显,从下一行开始关闭回显。
5. title命令:设置cmd窗口的标题。
6. ver命令:显示系统版本。
7. pause命令:让当前进程暂停一下,并显示“请按任意键继续. . .”。
8. for命令:用于循环执行一系列命令。
这只是批处理语法的冰山一角,实际上批处理还有许多其他的语法和命令。
如果你想要深入学习批处理,可以查阅相关教程和资料。
批处理命令——for

批处理命令——for【1】for命令简介 先把for循环与for命令类⽐⼀下,这样学习理解快。
for 循环语句,⼀般格式如下:1for (表达式1;表达式2;表达式3)2 {3循环体;4 } 1. 表达式1 ⼀般为初始状态赋值表达式,给控制变量赋初值。
2. 表达式2 ⼀般为关系表达式或逻辑表达式,为循环控制条件。
3. 表达式3 ⼀般为每次执⾏循环体后向控制变量重新赋值的表达式(给控制变量增量或减量)。
4. 语句:循环体,⼀般为复合语句(即可能需要执⾏多条语句)。
举个实例:1for (int i=0; i < 100; ++i)2 {3 cout << i << endl;4 } for 命令,⼀般格式如下: 在cmd窗⼝中使⽤格式:FOR %variable IN (set) DO command [command-parameters] 在批处理脚本中使⽤格式:FOR %%variable IN (set) DO command [command-parameters] 1. 在cmd窗⼝中使⽤,变量名必须⽤单%引⽤(即:%variable);在批处理脚本中使⽤,变量名必须⽤双%引⽤(即:%%variable)。
2. for、in和do是for命令的三个关键字,缺⼀不可。
3. 关键字in之后,do之前的括号不能省略。
举个实例:新建⼀个⽂本⽂件,命名为fordemo,修改⽂件类型为bat,⽤Notepad++打开编辑内容为:1@echo off2for %%i in (1 2 3 4 5) do@echo %%i3pause>nul 执⾏结果: 嗯哼,原来for命令就这么简单?嗨,同学,不要浮躁,保持冷静,更要理智。
下⾯,且看对上例语句的分析: 从命令组成结构由左向右剖析,除过关键字,依次分别为: 1. 变量名为i,i太简单,作为变量名不具备见名知意的特点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
批处理命令格式.txt人永远不知道谁哪次不经意的跟你说了再见之后就真的再也不见了。
一分钟有多长?这要看你是蹲在厕所里面,还是等在厕所外面……echo 表示显示此命令后的字符echo off 表示在此语句后所有运行的命令都不显示命令行本身@与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。
call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。
pause 运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续rem 表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。
例1:用edit编辑a.bat文件,输入下列内容后存盘为c: a.bat,执行该批处理文件后可实现:将根目录中所有文件写入 a.txt中,启动UCDOS,进入WPS等功能。
批处理文件的内容为: 命令注释:@echo off 不显示后续命令行及当前命令行dir c: *.* >a.txt 将c盘文件列表写入a.txtcall c: ucdos ucdos.bat 调用ucdosecho 你好显示"你好"pause 暂停,等待按键继续rem 准备运行wps 注释:准备运行wpscd ucdos 进入ucdos目录wps 运行wps批处理文件的参数批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符“%”。
%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。
变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。
例2:C:根目录下有一批处理文件名为f.bat,内容为:@echo offformat %1如果执行C: >f a:那么在执行f.bat时,%1就表示a:,这样format %1就相当于format a:,于是上面的命令运行时实际执行的是format a:例3:C:根目录下一批处理文件名为t.bat,内容为:@echo offtype %1type %2那么运行C: >t a.txt b.txt%1 : 表示a.txt%2 : 表示b.txt于是上面的命令将顺序地显示a.txt和b.txt文件的内容。
特殊命令if goto choice for是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。
一、if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。
有三种格式:1、if [not] "参数" == "字符串" 待执行的命令参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。
例:if "%1"=="a" format a:2、if [not] exist [路径 ]文件名待执行的命令如果有指定的文件,则条件成立,运行命令,否则运行下一句。
如: if exist c: config.sys type c: config.sys表示如果存在c: config.sys文件,则显示它的内容。
3、if errorlevel <数字> 待执行的命令很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。
如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。
如if errorlevel 2 goto x2二、goto 批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。
如:goto end:endecho this is the end标号用“:字符串”来定义,标号所在行不被执行。
三、choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。
注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /?查看用法。
choice的命令语法(该语法为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,就不会有暂停,默认选项会得到选择。
/D choice 在 nnnn 秒之后指定默认选项。
字符必须在用 /C 选项指定的一组选择中; 同时,必须用 /T 指定 nnnn。
/M text 指定提示之前要显示的消息。
如果没有指定,工具只显示提示。
/? 显示帮助消息。
注意:ERRORLEVEL 环境变量被设置为从选择集选择的键索引。
列出的第一个选择返回 1,第二个选择返回 2,等等。
如果用户按的键不是有效的选择,该工具会发出警告响声。
如果该工具检测到错误状态,它会返回 255 的ERRORLEVEL 值。
如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0的 ERRORLEVEL 值。
在一个批程序中使用 ERRORLEVEL 参数时,将参数降序排列。
示例:CHOICE /? 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。
"如果我运行命令:CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。
"屏幕上会显示:确认请按 Y,否请按 N,或者取消请按 C。
[Y,N,C]?例:test.bat的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列):@echo offchoice /C dme /M "defrag,mem,end"if errorlevel 3 goto endif errorlevel 2 goto memif errotlevel 1 goto defrag:defragc: dos defraggoto end:memmemgoto end:endecho good bye此批处理运行后,将显示“defrag,mem,end[D,M,E]?”,用户可选择d m e ,然后if语句根据用户的选择作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,批处理运行结束。
四、for 循环命令,只要条件符合,它将多次执行同一命令。
语法:对一组文件中的每一个文件执行某个特定命令。
FOR %%variable IN (set) DO command [command-parameters]%%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。
可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters为特定命令指定参数或命令行开关。
例如一个批处理文件中有一行:for %%c in (*.bat *.txt) do type %%c则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。
批处理示例1. IF-EXIST1)首先用记事本在C: 建立一个test1.bat批处理文件,文件内容如下:@echo offIF EXIST AUTOEXEC.BAT TYPE AUTOEXEC.BATIF NOT EXIST AUTOEXEC.BAT ECHO AUTOEXEC.BAT does not exist然后运行它:C: >TEST1.BAT如果C: 存在AUTOEXEC.BAT文件,那么它的内容就会被显示出来,如果不存在,批处理就会提示你该文件不存在。
2)接着再建立一个test2.bat文件,内容如下:@ECHO OFFIF EXIST %1 TYPE %1IF NOT EXIST %1 ECHO %1 does not exist执行:C: >TEST2 AUTOEXEC.BAT该命令运行结果同上。
说明:(1) IF EXIST 是用来测试文件是否存在的,格式为IF EXIST [路径+文件名] 命令(2) test2.bat文件中的%1是参数,DOS允许传递9个批参数信息给批处理文件,分别为%1~%9(%0表示test2命令本身) ,这有点象编程中的实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。
3) 更进一步的,建立一个名为TEST3.BAT的文件,内容如下:@echo offIF "%1" == "A" ECHO XIAOIF "%2" == "B" ECHO TIANIF "%3" == "C" ECHO XIN如果运行:C: >TEST3 A B C屏幕上会显示:XIAOTIANXIN如果运行:C: >TEST3 A B屏幕上会显示XIAOTIAN在这个命令执行过程中,DOS会将一个空字符串指定给参数%3。