批处理命令注释方法
- 格式:docx
- 大小:3.75 KB
- 文档页数:4
bat批处理命令及解释⼀、批处理概念批处理⽂件:包含DOS命令的可编辑可执⾏⽂件批处理:可以对某⼀对象批量操作的⽂件⼆、批处理命令简介命令1~101 echo 和 @回显命令@ #关闭单⾏回显echo off #从下⼀⾏开始关闭回显@echo off #从本⾏开始关闭回显。
⼀般批处理第⼀⾏都是这个echo on #从下⼀⾏开始打开回显echo #显⽰当前是 echo off 状态还是 echo on 状态echo. #输出⼀个”回车换⾏”,空⽩⾏#(同echo, echo; echo+ echo[ echo] echo/ echo)2 errorlevelecho %errorlevel%每个命令运⾏结束,可以⽤这个命令⾏格式查看返回码默认值为0,⼀般命令执⾏出错会设 errorlevel 为13 dir显⽰⽂件夹内容dir #显⽰当前⽬录中的⽂件和⼦⽬录dir /a #显⽰当前⽬录中的⽂件和⼦⽬录,包括隐藏⽂件和系统⽂件dir c: /a:d #显⽰ C 盘当前⽬录中的⽬录dir c: /a:-d #显⽰ C 盘根⽬录中的⽂件dir c: /b/p #/b只显⽰⽂件名,/p分页显⽰dir *.exe /s #显⽰当前⽬录和⼦⽬录⾥所有的.exe⽂件4 cd切换⽬录cd #进⼊根⽬录cd #显⽰当前⽬录cd /d d:sdk #可以同时更改盘符和⽬录5 md创建⽬录md d:abc #如果 d:a 不存在,将会⾃动创建中级⽬录#如果命令扩展名被停⽤,则需要键⼊ mkdir abc6 rd删除⽬录rd abc #删除当前⽬录⾥的 abc ⼦⽬录,要求为空⽬录rd /s/q d:temp #删除 d:temp ⽂件夹及其⼦⽂件夹和⽂件,/q安静模式7 del删除⽂件del d:test.txt #删除指定⽂件,不能是隐藏、系统、只读⽂件del /q/a/f d:temp*.*删除 d:temp ⽂件夹⾥⾯的所有⽂件,包括隐藏、只读、系统⽂件,不包括⼦⽬录del /q/a/f/s d:temp*.*删除 d:temp 及⼦⽂件夹⾥⾯的所有⽂件,包括隐藏、只读、系统⽂件,不包括⼦⽬录8 ren重命名命令ren d:temp tmp #⽀持对⽂件夹的重命名9 cls清屏10 type显⽰⽂件内容type c:boot.ini #显⽰指定⽂件的内容,程序⽂件⼀般会显⽰乱码type *.txt #显⽰当前⽬录⾥所有.txt⽂件的内容命令11~2011 copy拷贝⽂件copy c:test.txt d:test.bak复制 c:test.txt ⽂件到 d: ,并重命名为 test.bak从屏幕上等待输⼊,按 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暂停命令 //常⽤于使命令⾏窗⼝暂停,不⾄于打开bat⽂件后⽴即结束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~3021 tree显⽰⽬录结构tree d: #显⽰D盘的⽂件⽬录结构22 &顺序执⾏多条命令,⽽不管命令是否执⾏成功23 &&顺序执⾏多条命令,当碰到执⾏出错的命令后将不执⾏后⾯的命令find "ok" c:test.txt && echo 成功如果找到了"ok"字样,就显⽰"成功",找不到就不显⽰24 ||顺序执⾏多条命令,当碰到执⾏正确的命令后将不执⾏后⾯的命令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 > 和 >>> 清除⽂件中原有的内容后再写⼊>> 追加内容到⽂件末尾,⽽不会清除原有的内容主要将本来显⽰在屏幕上的内容输出到指定⽂件中指定⽂件如果不存在,则⾃动⽣成该⽂件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 第九个参数%* 从第⼀个参数开始的所有参数批参数(%n)的替代已被增强。
批处理for命令详解!⼤纲⼀前⾔⼆ for语句的基本⽤法三 for /f (delims、tokens、skip、eol、userbackq、变量延迟)四 for /r (递归遍历)五 for /d (遍历⽬录)六 for /l (计数循环)⼀、前⾔在批处理中,for是最为强⼤的命令语句,它的出现,使得解析⽂本内容、遍历⽂件路径、数值递增/递减等操作成为可能;配合if、call、 goto等流程控制语句,更是可以实现脚本复杂的⾃动化、智能化操作;合理使⽤for语句,还能使代码⼤为简化,免除各位编写⼤量重复语句之苦。
⽽能否熟练使⽤for语句,已经成为衡量⼀个⼈批处理⽔平⾼低最主要的标准。
在这个系列教程中,我将通过实际应⽤中频繁出现的例⼦,带领⼤家步⼊for语句的神奇之门,⼀步步迈向for语句的魔幻殿堂,使得⼤家在实际的应⽤中,能独⽴写出简洁⾼效的代码,在批处理的世界⾥⾃由驰骋。
注意:以下的讲解,都是基于简体中⽂版Windows XP Pro SP3的操作系统环境。
⼆、for语句的基本⽤法正如⾊彩缤纷的七彩光芒是由红绿蓝三原⾊构成的⼀样,最复杂的for语句,也有其基本形态,它的模样是这样的:在cmd窗⼝中:FOR %variable IN (set) DO command [command-parameters]在批处理⽂件中:FOR %%variable IN (set) DO command [command-parameters]具体例⼦:For %i in (1 2 3) do @echo %i之所以要区分cmd窗⼝和批处理⽂件两种环境,是因为在这两种环境下,命令语句表现出来的⾏为虽然基本⼀样,但是在细节上还是稍有不同。
最明显的⼀个差异就是:在cmd窗⼝中,for之后的形式变量I必须使⽤单百分号引⽤,即%i;⽽在批处理⽂件中,引⽤形式变量i必须使⽤双百分号,即%%i。
我们先来看⼀下for语句的基本要素都有些什么:1、for、in和do是for语句的关键字,它们三个缺⼀不可;2、%%I是for语句中对形式变量的引⽤,就算它在do后的语句中没有参与语句的执⾏,也是必须出现的;3、in之后,do之前的括号不能省略;4、command1表⽰字符串或变量,command2表⽰字符串、变量或命令语句;现在,你可能已经会写⼀个简单的for语句了,⽐如:[code1]@echo offfor %%I in () do echo %%Ipause保存为批处理⽂件并执⾏,将会在弹出的批处理窗⼝中看到这样的信息:请按任意键继续...很快地,你会觉得这个for语句是如此的简单,简单到你丝毫感受不出它的强⼤:这个for语句,和我直接⽤echo语句没什么两样啊!是的,演⽰代码永远都只是演⽰⽽已,就像⼤多数⾼级语⾔的教科书⼀样,在引导新⼿学习的时候,基本上都是千篇⼀律地告诉⼤家如何编写⼀个能显⽰ hello world! 的窗⼝,从这些演⽰代码中,你看不到它们具有多少实⽤性,你只是感到有点好奇:咦,居然弹出了⼀个窗⼝?⽚刻之后,你就会觉得索然⽆味。
批处理命令大全及使用方法批处理命令大全.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 PortNumbergoto end标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。
最好有一些说明这样你别人看起来才会理解你的意图啊。
4.Rem 命令注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。
批处理文件BAT的命令及使用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)来循环执行一条命令。
当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。
批处理的程序语句就是一条条的DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。
批处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译型语言有所不同,就c语言来说,扩展名为c或者cpp的文件可以称之为c语言文件或者c语言源代码,但只有编译连接后的exe文件才可以称之为c语言程序。
BAT命令全解批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT。
这些命令统称批处理命令,下面我就来给大家介绍一下批处理的命令。
1、 REMREM 是个注释命令一般是用来给程序加上注解的,该命令后的内容在程序执行的时候将不会被显示和执行。
例:REM 你现在看到的就是注解,这一句将不会被执行。
在以后的例子中解释的内容都REM 会放在REM后面。
请大家注意。
2、 ECHOECHO 是一个回显命令主要参数有OFF和 ON,一般用ECHO message来显示一个特定的消息。
例:Echo offRem 以上代表关闭回显即不显示所执行的命令Echo 这个就是消息。
Rem 以上代表显示“这就是消息”这列字符执行结果:C:\>ECHO.BAT这个就是消息。
3、 GOTOGOTO 即为跳转的意思。
在批处理中允许以“:XXX”来构建一个标号然后用GOTO :标号直接来执行标号后的命令。
例:LABELREM 上面就是名为LABEL的标号。
DIR C:\DIR D:\GOTO LABELREM 以上程序跳转标号LABEL处继续执行。
4、CALLCALL 命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后再继续执行原来的批处理。
例:批处理2.BAT内容如下:ECHO 这就是2的内容批处理1.BAT内容如下:ECHO 这是1的内容CALL 2.BATECHO 1和2的内容全部显示完成执行结果如下:C:\>1.BAT这是1的内容这就是2的内容1和2的内容全部显示完成5、PAUSEPAUSE 停止系统命令的执行并显示下面的内容。
例:C:\> PAUSE请按任意键继续 . . .6、 IFIF 条件判断语句,语法格式如下:IF [NOT] ERRORLEVEL number commandIF [NOT] string1==string2 commandIF [NOT] EXIST filename command说明:[NOT] 将返回的结果取反值即“如果没有”的意思。
目录第一章批处理基础第一节常用批处理内部命令简介1、REM 和::2、ECHO 和@3、PAUSE4、ERRORLEVEL5、TITLE6、COLOR7、mode 配置系统设备8、GOTO 和:9、FIND10、START11、assoc 和ftype12、pushd 和popd13、CALL14、shift15、IF16、setlocal 与变量延迟(ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION启动或停用延缓环境变量扩展名。
)17、A TTRIB显示或更改文件属性第二节常用特殊符号1、@命令行回显屏蔽符2、%批处理变量引导符3、> 重定向符4、>>重定向符5、<、>、<& 重定向符6、|命令管道符7、^转义字符8、组合命令9、& 组合命令10、||组合命令11、\"\"字符串界定符12、, 逗号13、; 分号14、() 括号15、! 感叹号第二章FOR命令详解一、基本格式二、参数/d仅为目录三、参数/R递归(文件名)四、参数/L迭代数值范围五、参数/F迭代及文件解析第三章FOR命令中的变量一、~I- 删除任何引号(\"),扩展%I二、%~fI- 将%I 扩展到一个完全合格的路径名三、%~dI- 仅将%I 扩展到一个驱动器号四、%~pI- 仅将%I 扩展到一个路径五、%~nI- 仅将%I 扩展到一个文件名六、%~xI- 仅将%I 扩展到一个文件扩展名七、%~sI- 扩展的路径只含有短名八、%~aI- 将%I 扩展到文件的文件属性九、%~tI- 将%I 扩展到文件的日期/时间十、%~zI- 将%I 扩展到文件的大小十一、%~$PATH:I第四章批处理中的变量一、系统变量二、自定义变量第五章set命令详解一、用set命令设置自定义变量二、用set命令进行简单计算三、用set命令进行字符串处理1、字符串替换2、字符串截取第六章if命令讲解第一种用法:IF [NOT] ERRORLEVEL number command第二种用法:IF [NOT] string1==string2 command第三种用法:IF [NOT] EXIST filename command第四种用法:IF增强的用法第七章DOS编程高级技巧一、界面设计二、if…else…条件语句三、循环语句四、子程序五、用ftp命令实现自动下载六、用7-ZIP实现命令行压缩和解压功能七、调用VBScript程序八、将批处理转化为可执行文件九、时间延迟1、利用ping命令延时2、利用for命令延时3、利用vbs延迟函数,精确度毫秒,误差1000毫秒内4、仅用批处理命令实现任意时间延迟,精确度10毫秒,误差50毫秒内十、模拟进度条十一、特殊字符的输入及应用十二、随机数(%random%)的应用技巧十三、变量嵌套与命令嵌套1、更正了所有的错别字,适当排版,增加条理性。
分类: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。
批处理⼊门⼿册之批处理常⽤DOS命令篇(echo、rem、cd、dir)1.1 学习echo rem cd dir命令学习要点:1。
显⽰信息:echo2。
注释语句:rem3。
⽬录切换:cd4。
列⽂件名:dir⼀、显⽰信息:echo在学习echo命令前我们先在C盘下建⼀个新⽂件夹bat,并建⼀个空的bat⽂件。
例如我是的mybat.bat 好了,下⾯我们开始《批处理⼊门⼿册》的第⼀章1.1节。
1。
输出提⽰信息格式:echo 你要输出的信息例1echo hello,worldecho i will come backpause执⾏显⽰:C:\bat>echo hello,worldhello,worldC:\bat>echo i will come backi will come backC:\bat>pause请按任意键继续. . .我们写的批处理,能不能让它不显⽰我们到底写了什么命令?OK!那我们就来学习echo的第⼆种⽤法!2。
关闭该命令的回显格式:@ 放在命令前⾯例2@echo hello,world@echo i will come backpause执⾏显⽰:hello,worldi will come backC:\bat>pause请按任意键继续. . .3。
打开回显或关闭回显功能格式:echo [{ on|off }]解释⼀下,如果在批处命令前加上echo off,那么将会关闭批处中的命令回显。
当然啦,你要是不想显⽰echo off命令本⾝,你可以把@加在echo off前⾯。
例3@echo offecho hello,worldecho i will come backpause执⾏显⽰:hello,worldi will come back请按任意键继续. . .在批处理前⾯加上@echo off ,它将使所有命令不再显⽰命令本⾝,当然也包括了echo off 命令本⾝也不会回显了。
批处理命令注释方法
批处理命令是一种在Windows操作系统下批量执行一系列命令的方法,它可以帮助我们自动化一些重复性的操作。
在编写批处理命令时,为了方便自己和他人阅读和理解代码,我们经常需要添加注释。
本文将介绍一些常用的批处理命令注释方法。
一、REM命令注释
REM是批处理命令中的注释命令,它可以在批处理脚本中添加注释,不会被执行。
REM后面的文本将被视为注释内容。
例如,我们可以使用REM命令注释说明某一行代码的作用:
```
REM 这是一个注释示例
```
二、::命令注释
::是另一种常用的注释方法,它与REM命令一样,可以在批处理脚本中添加注释,不会被执行。
::后面的文本将被视为注释内容。
例如,我们可以使用::命令注释说明某一行代码的作用:
```
:: 这是一个注释示例
```
三、@echo off命令注释
@echo off命令用于关闭批处理命令的命令回显功能,即在执行批处理脚本时不显示命令本身。
我们可以在@echo off命令后面添加注释,以解释脚本的功能和用途。
例如,我们可以使用@echo off命令注释说明整个批处理脚本的作用:
```
@echo off
REM 这是一个批处理脚本示例,用于批量处理文件
```
四、标题注释
在批处理脚本中,我们可以使用标题注释来标识和说明脚本的功能和用途。
标题注释通常位于脚本的开头,并使用一行或多行注释来进行说明。
例如,我们可以使用标题注释来说明脚本的功能和用途,并添加作者和日期信息:
:: 批处理脚本示例
:: 作者:XXX
:: 日期:YYYY-MM-DD
@echo off
REM 以下是脚本的具体执行逻辑
```
五、函数注释
在批处理脚本中,我们可以定义自己的函数来实现一些特定的功能。
为了方便理解函数的作用和用法,我们可以使用函数注释来进行说明。
例如,我们可以使用函数注释来说明函数的功能、输入参数和返回值:
```
:: 函数名称:add
:: 功能:实现两个数相加的功能
:: 输入参数:num1 - 第一个操作数
:: num2 - 第二个操作数
:: 返回值:相加的结果
六、代码行注释
除了在整个脚本或函数级别上进行注释,我们还可以在代码行级别上添加注释,以解释某一行代码的作用和用途。
例如,我们可以使用代码行注释来说明某一行代码的作用:
```
set /a result=%num1%+%num2% REM 将num1和num2相加的结果赋值给result变量
```
总结
批处理命令注释是编写和维护批处理脚本的重要手段,它可以帮助我们理解和调试代码,提高代码的可读性和可维护性。
本文介绍了一些常用的批处理命令注释方法,包括REM命令注释、::命令注释、@echo off命令注释、标题注释、函数注释和代码行注释。
通过合理使用这些注释方法,我们可以更好地编写和管理批处理脚本,提高工作效率。