批处理命令格式
批处理的见命令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太简单,作为变量名不具备见名知意的特点。
批处理命令For循环命令详解
分类:2010-06-11 13:0416793人阅读0批处理for命令详解FOR这条命令基本上都被用来处理文本,但还有其他一些好用的功能看看他的基本格式这里我引用的是批处理中的格式,直接在命令行只需要一个%号FOR 参数%%变量名IN 相关文件或命令DO 执行的命令参数:FOR有4个参数/d /l /r /f 他们的作用我在下面用例子解释%%变量名:这个变量名可以是小写a-z或者大写A-Z,他们区分大小写,FOR会把每个读取到的值给他;IN:命令的格式,照写就是了;相关文件或命令:FOR要把什么东西读取然后赋值给变量,看下面的例子do:命令的格式,照写就是了执行的命令:对每个变量的值要执行什么操作就写在这.可以在CMD输入for /看系统提供的帮助对照一下FOR %%variable IN set DO command command-parameters%%variable 指定一个单一字母可替换的参数;set 指定一个或一组文件;可以使用通配符;command 指定对每个文件执行的命令;command-parameters为特定命令指定参数或命令行开关;现在开始讲每个参数的意思/d仅为目录如果Set 也就是我上面写的"相关文件或命令" 包含通配符和,将对与Set 相匹配的每个目录而不是指定目录中的文件组执行指定的Command;系统帮助的格式:FOR /D %%variable IN set DO command他主要用于目录搜索,不会搜索文件,看这样的例子echo offfor /d %%i in do echo %%ipause把他保存放在C盘根目录执行,就会把C盘目录下的全部目录名字打印出来,而文件名字一个也不显示在来一个,比如我们要把当前路径下文件夹的名字只有1-3个字母的打出来echo offfor /d %%i in do echo %%ipause这样的话如果你当前目录下有目录名字只有1-3个字母的,就会显示出来,没有就不显示了思考题目:echo offfor /d %%i in window do echo %%ipause保存到C盘下执行,会显示什么呢自己看吧/D参数只能显示当前目录下的目录名字,这个大家要注意/R递归进入根目录树Drive:Path,在树的每个目录中执行for 语句;如果在/R 后没有指定目录,则认为是当前目录;如果Set 只是一个句点 .,则只枚举目录树;系统帮助的格式:FOR /R drive:path %%variable IN set DO command上面我们知道,/D只能显示当前路径下的目录名字,那么现在这个/R也是和目录有关,他能干嘛呢放心他比/D强大多了他可以把当前或者你指定路径下的文件名字全部读取,注意是文件名字,有什么用看例子echo offfor /r c:/ %%i in .exe do echo %%ipause咋们把这个BAT保存到D盘随便哪里然后执行,我会就会看到,他把C盘根目录,和每个目录的子目录下面全部的EXE文件都列出来了,这里的c:/就是目录了;再来一个echo offfor /r %%i in .exe do echo %%ipause参数不一样了,这个命令前面没加那个C:/也就是搜索路径,这样他就会以当前目录为搜索路径,比如你这个BAT你把他防灾d:/test目录下执行,那么他就会把D:/test目录和他下面的子目录的全部EXE文件列出来/L迭代数值范围使用迭代变量设置起始值Start,然后逐步执行一组范围的值,直到该值超过所设置的终止值End;/L 将通过对Start 与End 进行比较来执行迭代变量;如果Start 小于End,就会执行该命令;如果迭代变量超过End,则命令解释程序退出此循环;还可以使用负的Step 以递减数值的方式逐步执行此范围内的值;例如,1,1,5 生成序列1 2 3 4 5,而5,-1,1 则生成序列5 4 3 2 1;语法是:系统帮助的格式:for /L %% Variable in Start,Step,End do Command例如:echo offfor /l %%i in 1,1,5 do echo %%ipause保存执行看效果,他会打印从1 2 3 4 5 这样5个数字1,1,5这个参数也就是表示从1开始每次加1直到5终止再看这个例子echo offfor /l %%i in 1,1,5 do start cmdpause执行后是不是吓了一跳,怎么多了5个CMD窗口,呵呵如果把那个1,1,5改成1,1,65535会有什么结果,我先告诉大家,会打开65535个CMD窗口....这么多你不死机算你强当然我们也可以把那个start cmd改成md %%i 这样就会建立指定个目录了名字为1-65535 看完这个被我赋予破坏性质的参数后,我们来看最后一个参数/f含有/F的for详细说明含有/F的for有很大的用处,在批处理中使用的最多,用法如下:格式:FOR /F "options" %%i IN file DO commandFOR /F "options" %%i IN "string" DO commandFOR /F "options" %%i IN 'command' DO command这个可能是最常用的,也是最强的命令,主要用来处理文件和一些命令的输出结果;file代表一个或多个文件string 代表字符串command代表命令"options" 可选对于FOR /F %%i IN file DO commandfile为文件名,按照官方的说法是,for会依次将file中的文件打开,并且在进行到下一个文件之前将每个文件读取到内存,按照每一行分成一个一个的元素,忽略空白的行,看个例子;假如文件中有如下内容:第1行第1列第1行第2列第1行第3列第2行第1列第2行第2列第2行第3列第3行第1列第3行第2列第3行第3列你想显示中的内容,会用什么命令呢当然是type,typefor也可以完成同样的命令:for /f %%i in do echo %%i还是先从括号执行,因为含有参数/f,所以for会先打开,然后读出里面的所有内容,把它作为一个集合,并且以每一行作为一个元素,所以会产生这样的集合,{“第1行第1列第1行第2列第1行第3列”, 1行第1列第1行第2列第1行第3列.第2行第1列第2行第2列第2行第3列第3行第1列第3行第2列第3行第3列执行for /f "eol=. tokens=" %%i in do echo %%i结果是:第3行第1列第3行第2列第3行第3列用eol来告诉for忽略以“.”开头的行;同样也必须加tokens=,否则只会显示“第3行第1列======================================================终极dos批处理循环命令详解格式:FOR 参数%%变量名IN 相关文件或命令DO 执行的命令作用:对一个或一组文件,字符串或命令结果中的每一个对象执行特定命令,达到我们想要的结果;注意:在批处理文件中使用FOR 命令时,指定变量请使用%%variable,而不要用%variable;变量名称是区分大小写的,所以%i 不同于%I.关于:for命令可以带参数或不带参数,带参数时支持以下参数:/d /l /r /f下面分别解释一下===零:无参数时:---FOR %variable IN set DO command command-parameters%variable 指定一个单一字母可替换的参数;set 指定一个或一组文件;可以使用通配符;command 指定对每个文件执行的命令;command-parameters为特定命令指定参数或命令行开关;TTT示例:for %%i in t. do echo %%i --显示当前目录下与t.相匹配的文件只显示文件名,不显示路径for %%i in d:/mydocuments/.doc do echo %%i --显示d:/mydocuments/目录下与.doc 相匹配的文件===一、参数/d 参数只能显示当前目录下的目录名字格式:FOR /D %variable IN set DO command command-parameters这个参数主要用于目录搜索,不会搜索文件,/D 参数只能显示当前目录下的目录名字;TTT特别说明:只会搜索指定目录下的目录,不会搜索再下一级的目录;TTT示例:for /d %%i in c:/ do echo %%i --显示c盘根目录下的所有目录for /d %%i in do echo %%i --显示当前目录下名字只有1-3个字母的目录===二、参数/R 搜索指定路径及所有子目录中与set相符合的所有文件---格式:FOR /R drive:path %variable IN set DO command command-parameters此命令会搜索指定路径及所有子目录中与set相符合的所有文件,注意是指定路径及所有子目录;1、set中的文件名如果含有通配符或,则列举/R参数指定的目录及其下面的所用子目录中与set相符合的所有文件,无相符文件的目录则不列举;2、如果set中为具体文件名,不含通配符,则枚举该目录树即列举该目录及其下面的所有子目录并在后面加上具体的文件名,而不管set中的指定文件是否存在;例:for /r c:/ %%i in .exe do echo %%i --把C盘根目录,和每个目录的子目录下面全部的EXE文件都列出来了TTT示例:for /r c:/ %%i in do echo %%i --枚举了c盘所有目录for /r d:/backup %%i in 1 do echo %%i --枚举d/backup目录for /r c:/ %%i in do if exist %%i echo %%i --很好的搜索命令,列举存在的目录三、参数/L 该集表示以增量形式从开始到结束的一个数字序列;可以使用负的Step---格式:FOR /L %variable IN start,step,end DO command command-parameters该集表示以增量形式从开始到结束的一个数字序列;可以使用负的StepTTT示例:for /l %%i in 1,1,5 do echo %%i --输出1 2 3 4 5for /l %%i in 1,2,10 do echo %%i --输出1,3,5,7,9for /l %%i in 100,-20,1 do echo %%i --输出100,80,60,40,20for /l %%i in 1,1,5 do start cmd --打开5个CMD窗口for /l %%i in 1,1,5 do md %%i --建立从1~5共5个文件夹for /l %%i in 1,1,5 do rd /q %%i --删除从1~5共5个文件夹四、参数/F 使用文件解析来处理命令输出、字符串及文件内容;---这个参数是最难的,参数又多,先简单的解释一下:for命令带这个参数可以分析文件内容,字符串内容或某一命令输出的结果,并通过设置option得我们想要的结果;以下是某高手的解释,感觉有点太专业了,自认为不太容易理解,也列一下:迭代及文件解析--使用文件解析来处理命令输出、字符串及文件内容;使用迭代变量定义要检查的内容或字符串,并使用各种options选项进一步修改解析方式;使用options令牌选项指定哪些令牌应该作为迭代变量传递;请注意:在没有使用令牌选项时,/F 将只检查第一个令牌;文件解析过程包括读取输出、字符串或文件内容,将其分成独立的文本行以及再将每行解析成零个或更多个令牌;然后通过设置为令牌的迭代变量值,调用for 循环;默认情况下,/F 传递每个文件每一行的第一个空白分隔符号;跳过空行;+++格式:FOR /F "options" %variable IN file-set DO command command-parametersFOR /F "options" %variable IN "string" DO command command-parametersFOR /F "options" %variable IN 'command' DO command command-parameters或者,如果有usebackq 选项:FOR /F "options" %variable IN file-set DO command command-parametersFOR /F "options" %variable IN "string" DO command command-parametersFOR /F "options" %variable IN 'command' DO command command-parametersTTT说明:以上是WinXP系统中的帮助内容,你可以注意到,两者完全相同,这其实是系统的错误,第二段“如果有usebackq 选项:”应该以下的内容:FOR /F "options" %variable IN "file-set" DO command command-parametersFOR /F "options" %variable IN 'string' DO command command-parametersFOR /F "options" %variable IN `command` DO command command-parameters--`command`中的引号为反引号,是键盘上数字1左面的那个键+++TTT说明:下面是详细的解释,大部分是系统中的帮助内容,也有些错误怪不得for命令这么难学,已经被我纠正了;1 OPTION关键字详解:eol=c:指一个行注释字符的结尾就一个;例如:eol=; --忽略以分号打头的那些行;skip=n:指在文件开始时忽略的行数;例如:skip=2 --忽略2行;delims=xxx:指分隔符集;这个替换了空格和跳格键的默认分隔符集;例如:delims=, --指定用逗号,空格对字符串进行分隔;tokens=x,y,m-n:指每行的哪一个符号被传递到每个迭代的for 本身;这会导致额外变量名称的分配;m-n格式为一个范围;通过nth 符号指定mth;如果符号字符串中的最后一个字符是星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本;例如:tokens=2,3 --将每行中的第二个和第三个符号传递给for 程序体;tokens=2,3 ... i% --将会把取到的第二个字符串赋给i%,第三个赋给j%,剩下的赋给k%;关于usebackq,不同版本的系统提示不同的帮助,不过都有助于理解,所以都摘抄如下:1,usebackq:使用后引号键盘上数字1左面的那个键`;未使用参数usebackq时:file-set 表示文件,不能加引号,所以不能含有空格;加双引号表示字符串,即"string";加单引号表示执行命令,即'command';使用参数usebackq时:file-set和"file-set"都表示文件,当文件路径或名称中有空格时,就可以用双引号括起来;单引号表示字符串,即'string';后引号表示命令执行,即`command`;此段是WinXP系统中的帮助2,usebackq:指定新语法已在下类情况中使用:在作为命令执行一个后引号的字符串;并且一个单引号字符为文字字符串命令;并允许在filenameset中使用双引号扩起文件名称;以上两条结合着看,其实已经可以明白了,我再说明一下:其实这个参数的目的就是为了处理带有空格的文件名;如果您要处理的文件名和路径中含有空格,如果直接使用,会提示找不到文件;如果你用双引号将文件名和路径括起来;这时候将作为字符串处理,而不是作为文件了;为了应对这种情况,所以才增加了这个“usebackq”参数;如果使用了这个参数,对于括号中的加双引号的集合,系统就可以认为是文件了;真正的字符串要加单引号;命令要加反引号;2 file-set 为一个或多个文件名;继续到file-set 中的下一个文件之前,每份文件都已被打开、读取并经过处理;处理包括读取文件,将其分成一行行的文字,然后将每行解析成零或更多的符号;然后用已找到的符号字符串变量值调用For 循环;以默认方式,/F 通过每个文件的每一行中分开的第一个空白符号;跳过空白行;您可通过指定可选"options"参数替代默认解析操作;这个带引号的字符串包括一个或多个指定不同解析选项的关键字;3 %i:专门在for 语句中得到说明,%j 和%k 是通过tokens= 选项专门得到说明的;您可以通过tokens= 一行指定最多26 个符号,只要不试图说明一个高于字母'z' 或'Z' 的变量;请记住,FOR 变量是单一字母、分大小写和全局的;而且,同时不能有52 个以上都在使用中;TTT补充说明:一般在tokens后只指定第一个参数,如%%i或%%a,在后面使用第二个及两个以上的参数,自动按顺序往下排即可;如前面指定的是%%a,后面则用%%b代表第二个结果,%%c代表第三个结果;;;测试了一下tokens后指定多个变量名,没有测试成功,应该是不可以的;所以token后只能跟要使用的第一个变量名如果使用的变量名超过了%z或%Z,就无法使用了,曾经以为会循环过来:如%%z后可以使用%%a或%%A,但经测试,这是不可以的;如:for /f "tokens=1,2,3 delims=-, " %%y in "aa bb,cc-dd ee" doecho %%y %%z %%A %%a --只会输出前两个字符串,后面的两个变量是无效的;+++以下是系统提供的范例:FOR /F "eol=; tokens=2,3 delims=, " %i in do echo %i %j %k --说明:会分析中的每一行,eol=; --忽略以分号打头的那些行;tokens=2,3 --将每行中的第二个和第三个符号传递给for 程序体;delims= , --用逗号和/或空格定界符号;%i --这个for 程序体的语句引用%i 来取得取得的首个字符串本例中为第二个符号,引用%j 来取得第二个字符串本例中为第三个符号引用%k来取得第三个符号后的所有剩余符号;TTT说明:上述例子和说明中明显的错误,%i应该换为%%i帮助中有明确的说明:指定变量请使用%%variable,而不要用%variable,误导+++TTT:下面列我做的几个例子:1,分析文件的例子FOR /F "eol=; tokens=1,2 delims=,- " %%i in d:/ do echo %%i %%j %%k2,分析字符串的例子:for /f "tokens=1,2,3 delims=-, " %%i in "aa bb,cc-dd ee" do echo %%i %%j %%k %%l 3,分析命令输出的例子:FOR /F "tokens=1 delims==" %%i IN 'set' DO echo %%i----%%j如果使用了usebackq参数后,命令如下,结果与上面的完全相同;1,分析文件的例子FOR /F "usebackq eol=; tokens=1,2 delims=,- " %%i in "d:/" do echo %%i %%j %%k 2,分析字符串的例子:for /f "usebackq tokens=1,2,3 delims=-, " %%i in 'aa bb,cc-dd ee' doecho %%i %%j %%k %%l3,分析命令输出的例子:会枚举当前环境中的环境变量名称和值;FOR /F "usebackq tokens=1 delims==" %%i IN `set` DO echo %%i----%%j结果大家可以试一下,很容易就明白的;===FOR命令中的变量---FOR 变量参照的替换已被增强;您现在可以使用下列选项语法:~I - 删除任何引号",扩充%I%~fI - 将%I 扩充到一个完全合格的路径名%~dI - 仅将%I 扩充到一个驱动器号%~pI - 仅将%I 扩充到一个路径%~nI - 仅将%I 扩充到一个文件名%~xI - 仅将%I 扩充到一个文件扩展名%~sI - 扩充的路径只含有短名%~aI - 将%I 扩充到文件的文件属性%~tI - 将%I 扩充到文件的日期/时间%~zI - 将%I 扩充到文件的大小%~$PATH:I - 查找列在路径环境变量的目录TTT提示:是环境变量path的目录,并将%I 扩充到找到的第一个完全合格的名称;如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串此外,还可以组合修饰符来得到多重结果:%~dpI - 仅将%I 扩充到一个驱动器号和路径%~nxI - 仅将%I 扩充到一个文件名和扩展名%~fsI - 仅将%I 扩充到一个带有短名的完整路径名%~dp$PATH:i - 查找列在路径环境变量的目录,并将%I 扩充到找到的第一个驱动器号和路径;%~ftzaI - 将%I 扩充到类似输出线路的DIR在以上例子中,%I 和PATH 可用其他有效数值代替;%~ 语法用一个有效的FOR 变量名终止;选取类似%I 的大写变量名比较易读,而且避免与不分大小写的组合键混淆;以上是系统帮助的内容我们可以看到每行都有一个大写字母"I",这个I其实就是我们在FOR带入的变量,例如:FOR /F "usebackq eol=; tokens=1,2 delims=,- " %%x in "d:/" doecho %%x %%y %%z这里我们就要把那个x,y,z改成%~fx,%~fy,%~fz;+++TTT特例:以下是我根据以上说明作的一个综合的例子,可以直接复制到记事本里,保存为bat格式c盘下任一目录,运行后,可以直观的看到扩展后的效果;echo offecho ---显示"dir c:/ /b /ah"for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 不扩展变量%%ifor /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~fI %%~fi --扩充到一个完全合格的路径名for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~dI %%~di --仅将变量扩充到一个驱动器号for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~pI %%~pi --仅将变量扩充到一个路径for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~nI %%~ni --仅将变量扩充到一个文件名for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~xI %%~xi --仅将变量扩充到一个文件扩展名for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~sI %%~si --扩充的路径只含有短名for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~aI %%~ai --将变量扩充到文件的文件属性for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~tI %%~ti --将变量扩充到文件的日期/时间for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~zI %%~zi --将变量扩充到文件的大小for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~$PATH:I %%~$PATH:i --查找列在路径环境变量的目录,并将变量扩充到找到的第一个完全合格的名称echo ---以下显示组合修饰符来得到多重结果---:for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~dpI %%~dpi --仅将变量扩充到一个驱动器号和路径for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~nxI %%~nxi --仅将变量扩充到一个文件名和扩展名for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~fsI %%~fsI --仅将变量扩充到一个带有短名的完整路径名for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~dp$PATH:I %%~dp$PATH:i --查找列在路径环境变量的目录,并将变量扩充到找到的第一个驱动器号和路径for /f "delims==" %%i in 'dir c:/ /b /ah' do echo 扩展变量到~ftzaI %%~ftzai --将变量扩充到类似输出线路的DIRecho.echo ---显示"dir C:/WINDOWS/system32/ /b"for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 不扩展变量%%ifor /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~fI %%~fi --扩充到一个完全合格的路径名for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~dI %%~di --仅将变量扩充到一个驱动器号for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~pI %%~pi --仅将变量扩充到一个路径for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~nI %%~ni --仅将变量扩充到一个文件名for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~xI %%~xi --仅将变量扩充到一个文件扩展名for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~sI %%~si --扩充的路径只含有短名for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~aI %%~ai --将变量扩充到文件的文件属性for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~tI %%~ti --将变量扩充到文件的日期/时间for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~zI %%~zi --将变量扩充到文件的大小for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~$PATH:I %%~$PATH:i --查找列在路径环境变量的目录,并将变量扩充到找到的第一个完全合格的名称echo ---以下显示组合修饰符来得到多重结果---:for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~dpI %%~dpi --仅将变量扩充到一个驱动器号和路径for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~nxI %%~nxi --仅将变量扩充到一个文件名和扩展名for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~fsI %%~fsI --仅将变量扩充到一个带有短名的完整路径名for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~dp$PATH:I %%~dp$PATH:i --查找列在路径环境变量的目录,并将变量扩充到找到的第一个驱动器号和路径for /f "delims==" %%i in 'dir C:/WINDOWS/system32/ /b' do echo 扩展变量到~ftzaI %%~ftzai --将变量扩充到类似输出线路的DIRTTT说明:1,以上命令中,%%~fsI无法显示,估计是系统错误,因为%%~fI是扩充到一个完全合格的路径名,%%~sI只含有短文件名,本身是相互矛盾的,所以出错;不知是系统的错误还是在考我们~~2,以上命令如果保存在别的盘中,无法显示正确的驱动器和路径;3,如果想要%%~dp$PATH:i正常显示,要保证环境变量path中确实有这个路径:C:/WINDOWS/system32;下面依次说明一下:+++一、~I - 删除任何引号",扩展%I---这个变量的作用就如他的说明,删除引号删除引号规则如下BAT兄补充:1、若字符串首尾同时存在引号,则删除首尾的引号;2、若字符串尾不存在引号,则删除字符串首的引号;3、如果字符串中间存在引号,或者只在尾部存在引号,则不删除;龙卷风补充:无头不删,有头连尾删;我们来看这个例子,首先建立临时文件,内容如下"1111"2222"3333""55"55"55也可建立个BAT文件代码如下:echo offecho ^"1111>echo "2222">>echo 3333^">>echo "4444"44>>echo ^"55"55"55>>rem 上面建立临时文件,注意不成对的引号要加转义字符^,重定向符号前不要留空格FOR /F "delims=" %%i IN DO echo %%~ipausedel执行后,我们看CMD的回显如下:1111 字符串前的引号被删除了2222 字符串首尾的引号都被删除了3333" 字符串前无引号,后面的引号保留4444"44 字符串前面的引号删除了,而中间的引号保留55"55"55 字符串前面的引号删除了,而中间的引号保留请按任意键继续. . .结果和之前中的内容对比一下,我们会发现第1、2、5行的引号都消失了,这就是删除引号~i的作用了+++二、%~fI - 将%I 扩展到一个完全合格的路径名示例:把代码保存放在随便哪个地方,我这里就放桌面吧.FOR /F "delims==" %%i IN 'dir /b' DO echo %%~fipause执行后显示内容如下C:/Documents and Settings/Administrator/桌面/C:/Documents and Settings/Administrator/桌面/当我把代码中的%%~fi直接改成%%iFOR /F "delims==" %%i IN 'dir /b' DO echo %%ipause执行后就会显示以下内容:通过对比,我们很容易就看出没有路径了,这就是"将%I 扩展到一个完全合格的路径名"的作用,也就是如果%i变量的内容是一个文件名的话,他就会把这个文件所在的绝对路径打印出来,而不只单单打印一个文件名,自己动手动实验下就知道了+++三、%~dI - 仅将%I 扩展到一个驱动器号看例子:代码如下,我还是放到桌面执行FOR /F "delims==" %%i IN 'dir /b' DO echo %%~dipause执行后我CMD里显示如下C:C:我桌面就两个文件,,%%~di作用是,如果变量%%i的内容是一个文件或者目录名,他就会把他这文件或者目录所在的盘符号打印出来+++四、%~pI - 仅将%I 扩展到一个路径这个用法和上面一样,他只打印路径不打印文件名字FOR /F "delims==" %%i IN 'dir /b' DO echo %%~pipause我就不打结果了,大家自己复制代码看结果吧,下面几个都是这么个用法,代码给出来,大家自己看结果吧+++五、%~nI - 仅将%I 扩展到一个文件名只打印文件名字FOR /F "delims==" %%i IN 'dir /b' DO echo %%~nipause+++六、%~xI - 仅将%I 扩展到一个文件扩展名只打印文件的扩展名FOR /F "delims==" %%i IN 'dir /b' DO echo %%~xi pause+++七、%~sI - 扩展的路径只含有短名打印绝对短文件名FOR /F "delims==" %%i IN 'dir /b' DO echo %%~si pause+++八、%~aI - 将%I 扩展到文件的文件属性打印文件的属性FOR /F "delims==" %%i IN 'dir /b' DO echo %%~ai pause+++九、%~tI - 将%I 扩展到文件的日期/时间打印文件建立的日期FOR /F "delims==" %%i IN 'dir /b' DO echo %%~ti pause+++十、%~zI - 将%I 扩展到文件的大小打印文件的大小FOR /F "delims==" %%i IN 'dir /b' DO echo %%~zipause龙卷风补充:上面例子中的"delims=="可以改为"delims=",即不要分隔符+++十一、%~$PATH:I - 查找列在路径环境变量的目录,并将%I 扩展到找到的第一个完全合格的名称;如果环境变量名未被定义,或者没有找到文件,此组合键会扩展到空字符串这是最后一个,和上面那些都不一样,我单独说说然后在把这些代码保存为批处理,放在桌面;echo offFOR /F "delims=" %%i IN “” DO echo %%~$PATH:ipause龙卷风补充:上面代码显示结果为C:/WINDOWS/system32/他的意思就在PATH变量里指定的路径里搜索文件,如果有则会把他所在绝对路径打印出来,没有就打印一个错误TTT说明,保存到桌面上,运行显示结果为:系统找不到文件“”;查看环境变量path中确实有这个路径,不明原因后来发现了,原来是中文引号的原因;上面的命令应该写成:FOR /F "delims=" %%i IN "" DO echo %%~$PATH:i最后发一个用批处理做一五子棋游戏:echo off&setlocal enabledelayedexpansion。
BATCH(BAT批处理命令语法)
BATCH(BAT批处理命令语法)bat语法备忘扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的⽂件就是批处理⽂件[@more@]bat语法备忘扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的⽂件就是批处理⽂件。
==== 注 =======================================.bat是dos下的批处理⽂件.cmd是nt内核命令⾏环境的另⼀种批处理⽂件从更⼴义的⾓度来看,unix的shell脚本以及其它操作系统甚⾄应⽤程序中由外壳进⾏解释执⾏的⽂本,都具有与批处理⽂件⼗分相似的作⽤,⽽且同样是由专⽤解释器以⾏为单位解释执⾏,这种⽂本形式更通⽤的称谓是脚本语⾔。
所以从某个程度分析,batch, unix shell, awk,basic, perl 等脚本语⾔都是⼀样的,只不过应⽤的范围和解释的平台各有不同⽽已。
甚⾄有些应⽤程序仍然沿⽤批处理这⼀称呼,⽽其内容和扩展名与dos的批处理却⼜完全不同。
===================================⾸先批处理⽂件是⼀个⽂本⽂件,这个⽂件的每⼀⾏都是⼀条DOS命令(⼤部分时候就好象我们在DOS提⽰符下执⾏的命令⾏⼀样),你可以使⽤DOS下的Edit或者Windows的记事本(notepad)等任何⽂本⽂件编辑⼯具创建和修改批处理⽂件。
==== 注 ===================批处理⽂件中完全可以使⽤⾮dos命令,甚⾄可以使⽤不具有可执⾏特性的普通数据性⽂件,这缘于windows系统这个新型解释平台的涉⼊,使得批处理的应⽤越来越"边缘化"。
所以我们讨论的批处理应该限定在dos环境或者命令⾏环境中,否则很多观念和设定都需要做⽐较⼤的变动。
========================其次,批处理⽂件是⼀种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运⾏的流程,在批处理中也可以使⽤循环语句(for)来循环执⾏⼀条命令。
批处理命令及运行目录表
批处理命令及运行目录表批处理命令与变量1:for命令及变量基本格式:FOR /参数%variable IN (set) DO command [command_parameters]%variable:指定一个单一字母可替换的参数,如:%i ,而指定一个变量则用:%%i ,而调用变量时用:%i% ,变量是区分大小写的(%i 不等于%I)。
批处理每次能处理的变量从%0—%9共10个,其中%0默认给批处理文件名使用,%1默认为使用此批处理时输入的的第一个值,同理:%2—%9指输入的第2-9个值;例:netuse \\ip\ipc$ pass /user:user 中ip为%1,pass为%2 ,user 为%3(set):指定一个或一组文件,可使用通配符,如:(D:\user.txt)和(1 1 254)(1 -1 254),{ "(1 1 254)"第一个"1"指起始值,第二个"1"指增长量,第三个"254"指结束值,即:从1到254;"(1 -1 254)"说明:即从254到1 }command:指定对第个文件执行的命令,如:net use命令;如要执行多个命令时,命令这间加:& 来隔开command_parameters:为特定命令指定参数或命令行开关IN (set):指在(set)中取值;DO command :指执行command参数:/L 指用增量形式{ (set)为增量形式时};/F 指从文件中不断取值,直到取完为止{ (set)为文件时,如(d:\pass.txt)时}。
用法举例:@echo offecho 用法格式:test.bat *.*.* > test.txtfor /L %%G in (1 1 254) do echo %1.%%G >>test.txt & net use \\%1.%%G/user:administrator | find "命令成功完成" >>test.txt存为test.bat说明:对指定的一个C类网段的254个IP依次试建立administrator密码为空的IPC$连接,如果成功就把该IP存在test.txt 中。
bat批处理命令用法
bat批处理命令用法在Windows系统中,批处理(Batch)是一种脚本处理语言,通常用于自动化一系列的命令或任务。
bat批处理命令通过将一系列命令组合成一个文件,让用户可以方便地执行一系列操作。
这篇文章将详细介绍bat批处理命令的基本用法。
在bat批处理文件中,可以使用各种命令和语句来执行一系列的操作。
这些命令和语句遵循特定的语法规则,并按照顺序执行。
常用的命令包括:* 赋值(SET)* 条件判断(IF)* 循环(FOR)* 终止(EXIT)二、常用bat批处理命令详解1. 赋值(SET):用于设置变量的值。
语法为“SET 变量名=值”。
例如,“SET myVariable=Hello World”。
2. 条件判断(IF):用于根据条件执行不同的操作。
语法为“IF 条件 THEN 命令”。
例如,“IF %errorlevel% NEQ 0 GOTO error”。
3. 循环(FOR):用于重复执行一组命令。
语法为“FOR 变量 IN 范围 DO 命令”。
例如,“FOR %%a IN (A B C) DO (echo %%a)”。
4. 终止(EXIT):用于退出批处理文件。
语法为“EXIT”。
例如,“EXIT /B”。
下面是一个简单的bat批处理文件示例,它列出当前目录中的所有文件:@echo offsetlocaldir /b /s > list.txtecho.echo 所有文件已列出在list.txt中。
pause >nulexit这个批处理文件首先使用dir命令列出当前目录及其子目录中的所有文件,并将结果重定向到一个名为list.txt的文件中。
然后,它输出一条消息,提示用户所有文件已列出在list.txt中,并等待用户按任意键继续。
最后,它退出批处理文件。
* 在命令前加上@字符可以隐藏命令执行结果。
例如,使用@echo off可以禁止在命令提示符下显示批处理文件的名称。
* 使用setlocal命令可以避免变量冲突。
批处理命令格式
一、if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:
1、if [not] "参数" == "字符串" 待执行的命令
参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。
例:if "%1"=="a" format a:
二、goto 批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。
如:
goto end
:end
echo this is the end
标号用“:字符串”来定义,标号所在行不被执行。
echo off 表示在此语句后所有运行的命令都不显示命令行本身
@与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。
call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。
cd ucdos 进入ucdos目录
wps 运行wps
批处理文件的参数
批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符“%”。
%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。
choice的命令语法(该语法为Windows 2003中choice命令的语法,其它版本的choice的命令语法与此大同小异):
用批处理(dos命令)修改注册表
FullKey ROOTKEY\SubKey
ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
SubKey 所选 ROOTKEY 下注册表项的完整名
REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead
添加一个值(名称: Data,类型: REG_BINARY,数据: fe340ead)
REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail
reg add HKLM\SOFTWARE\03D0C547-EBAD-43d9-8B57-DE16E7A93B52 /v AutoStart /t REG_DWORD /d 1 /f
REG_NONE | REG_EXPAND_SZ ]
如果忽略,则采用 REG_SZ
/s 指定一个在 REG_MULTI_SZ 数据字符串中
用作分隔符的字符
如果忽略,则将 "\0" 用作分隔符
用批处理(dos命令)写修改注册表的命令
一般书写格式:
reg add 注册表路径 /v 值名 /t 要修改的数值类型 /d 想要输入的数据 /f(这个选项可根据情况自行添加,意为不用提示就强行改写现有注册表项)
如果在批处理中不想显示出命令执行过程可以再reg前面加入@,后面加上>nul,不用加空格,紧贴命令前后。
注意: 在扩充字符串中使用双百分比符号( %% )
比如现在
HKEY_LOCAL_MACHINE\SOFTWARE\03D0C547-EBAD-43d9-8B57-DE16E7A93B52
批处理 for if 命令的用法
for /l %%i in (1 1 5) do echo %%i
然后运行,可以发现屏幕上显示1 2 3 4 5(每字一行)
/D参数(常用来查询 当前目录 或者 指定目录的文件夹)
如:查询F盘根目录下的文件夹
tokens=1-5
1-5很好理解就1至5,前面我们用delims=后面的字符为分割符,将文本内容分成了多列,那么你需要的是哪
些列呢?
如上例:
通过dilims=,./ 将文本分成了111 222 333 444 555 五列.
注意代码中前面有个%%a 这里的%%a就是代表第一列,第二列就是%%b,第三列就是%%c 依此类推.....
for /f "tokens=1,3* delims=,./ " %%a in ("111,222.333 444/555") do echo %%a %%b %%c
按分隔符将字符串分段后,取第1、3、4-5三段分别作为%%a %%b %%c
for /f "tokens=1,3* delims=,./ " %a in ("111,222.333 444/555") do echo %a %b %c %d %e
那么我们如果把echo %%a %%b %%c %%d %%e 改为 echo %%e %%d %%c %%b %%a 会如何呢?
当然.会显示 555 444 333 222 111
如果是:echo %%b %%d 又会显示222 444
若是第一个%%a把它改为%%i也是一样,那么第二列就是%%j...%%k...依此类推....
批处理常用命令
批处理常用命令什么是批处理?批处理是一种在Windows操作系统中执行一系列命令的技术。
通过批处理,可以自动化执行多个命令,从而提高工作效率。
批处理文件通常以.bat或.cmd为文件后缀。
批处理常用命令1. echoecho命令用于在屏幕上显示文本。
可以使用以下语法:echo [文本]例如,输入以下命令:echo Hello, World!屏幕上将显示Hello, World!2. pausepause命令用于暂停批处理的执行,直到用户按下任意键。
它通常用于确保在执行下一步之前用户已经阅读了某些信息。
pause3. ifif命令用于根据条件执行不同的操作。
可以使用以下语法:if [条件] ([操作1]) else ([操作2])例如,下面的示例检查变量x是否等于10,并根据结果执行不同的操作:set x=10if %x%==10 (echo x is equal to 10.) else (echo x is not equal to 10.)4. forfor命令用于循环执行一系列操作。
可以使用以下语法:for %%变量 IN (列表) DO ([操作])例如,下面的示例将输出从1到5的数字:for %%i in (1 2 3 4 5) do (echo %%i)5. setset命令用于设置或显示环境变量。
可以使用以下语法:set [变量名]=[值]例如,输入以下命令将设置名为MESSAGE的环境变量:set MESSAGE=Hello, World!6. callcall命令用于调用一个批处理文件中的另一个批处理文件。
可以使用以下语法:call [批处理文件路径]例如,下面的示例调用名为example.bat的批处理文件:call example.bat7. startstart命令用于启动一个程序或打开一个文档。
可以使用以下语法:start [程序路径/文档路径]例如,输入以下命令将启动记事本应用程序并打开一个文档:start notepad.exe C:\example.txt8. deldel命令用于删除文件。
批处理命令格式参数语法
批处理命令格式参数语法批处理命令是一种在Windows操作系统下批量执行一系列命令的方法。
它可以通过命令行或者批处理文件来运行,大大提高了命令的执行效率和准确性。
在批处理命令中,可以使用参数来传递信息并对命令进行进一步的控制。
下面是批处理命令格式参数的语法。
1.基本语法:2.参数的使用方法:-参数可以是固定值,也可以是变量,用于在命令中引用不同的内容或者在不同的环境中执行不同的操作。
-参数可以通过位置进行传递,也可以通过名称进行传递。
-参数可以是必需的,也可以是可选的。
3.参数的命名规则:-参数名通常以一个或多个字母开头,可以包含字母、数字和下划线,但不能包含空格和特殊字符。
-参数名通常不区分大小写,但在一些情况下可能会区分大小写,因此最好保持一致性。
4.参数的传递方式:5.参数的默认值:-可以为参数设置默认值,以防止未传递相应的值。
-可以使用条件语句(如IF)来检查参数是否为空,并使用默认值或给出错误提示。
6.传递参数示例:- 位置参数:命令 filename.txt将文件名作为位置参数传递给命令,可以使用%1来引用。
- 命名参数:命令 /option1:value1 /option2:value2将选项和值作为命名参数传递给命令,可以使用%option1%和%option2%来引用。
总结:批处理命令格式参数的语法非常灵活,可以根据具体的需求来传递参数,并在命令中进行相应的操作。
参数的命名规则和传递方式都有一定的限制,需要遵循相应的规范。
合理使用参数可以使批处理命令更加灵活和高效,提高工作效率。
最后,需要注意在编写批处理命令时,加上相应的错误处理和校验机制,以保证命令的正常执行。
windows batch scripting语法
windows batch scripting语法
Windows的批处理脚本使用批处理命令集合来执行一系列的
命令和操作。
以下是Windows批处理脚本的基本语法:
1. 批处理文件后缀名为`.bat`。
2. 命令以行的形式出现,每个命令占据单独的一行。
3. 命令可包含参数和选项。
4. 使用`@echo off`命令关闭批处理脚本的命令回显。
5. 使用`REM`或`::`来添加注释。
下面是一些常用的批处理命令:
- `echo`: 在命令提示符窗口上显示文本,使用`echo 文本内容`。
- `set`: 设置环境变量,使用`set 变量名=值`。
- `if`: 条件语句,根据条件执行不同的操作。
例如:
```batch
if 条件 (
命令1
) else (
命令2
)
```
- `for`: 循环语句,按指定方式重复操作。
例如:
```batch
for %%变量 IN (值1 值2 ...) DO (
命令
)
```
- `goto`、`:label`和`call`:用于控制程序流。
```batch
goto labelname
:labelname
command
call another_batch_file.bat
```
- `pause`: 暂停批处理的执行,等待用户按下任意键继续。
这只是批处理脚本的一个基本概述,提供了一些常用命令和语法。
在Windows批处理中还有更多的命令和编程技巧可用于实现更复杂的脚本逻辑。
批处理命令操作方法
文件名,这个文件必须是用REG SAVE命令所建立的
10.REG SAVE
保存注册表,这个操作是类似注册表编辑器中的将整个注册表导出到一个文件中,当然,也可以导出某个键或其下面的子键的集合.
REG SAVE [\\Machine\]KeyName FileName
丙例子: REG COPY \\ZODIAC\HKLM\Software\MyCo HKLM\Software\MyCo1
作用与上面类似,但ZODIAC是远程计算机,而HKLM是本地当前所用计算机.
4.REG DELETE
删除一个注册表、注册表键值或子键值.
REG DELETE [\\Machine\]Keyname [/v ValueName | /ve | /va] [/f]
1. REG ADD
用该命令加入一个新的指定键值,从给出的例子文件来看,基本的使用方法如下:
命令-计算机名称-根键名-[子键名称-类型-数据]下面是更详细、规范的表述:
REG ADD [\\Machine\]Keyname [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f]
Key:指定的键名,这个键名是指定文件中所选择的根键或其以下的键值的集合,这个临时装入的键或其集合将在下次启动时删除,也可以用REG UNLOAD命令删除。
FileName :指定的文件名。
8.REG QUERY
显示相关项目的信息,此处所指项目可以是整个注册表之中的根键、子键或其键集合。
参数及说明:
Machine :
计算机名称,此处关于计算机名称的介绍,其它命令也将使用,请注意.以Machine指定远程计算机名称,如果省略,默认值是使用当前的本地计算机,不能使用驱动器名来指定远程计算机名.计算机名称前面的双反斜杠符号不能省去.如:\\MYDIAC 就是一个正确的范例.
批处理命令大全)
批处理命令大全1.Echo 命令打开回显或关闭请求回显功能,或显示消息。
如果没有任何参数,echo 命令将显示当前回显设置。
语法echo [{on|off}] [message]Sample:echo off / echo hello world在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。
2.@ 命令表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。
Sample:@echo off@echo Now initializing the program,please wait a minite...@format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。
)3.Goto 命令指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
语法:goto label (label是参数,指定所要转向的批处理程序中的行。
)Sample:if {%1}=={} goto noparmsif {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。
)@Rem check parameters if null show usage:noparmsecho Usage: monitor.bat ServerIP PortNumber goto end标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。
最好有一些说明这样你别人看起来才会理解你的意图啊。
4.Rem 命令注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。
- 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。