《2022年批处理命令》由会员分享,可在线阅读,更多相关《2022年批处理命令(3页珍藏版)》请在金锄头文库上搜索。
1、处理常用符号详解这是一篇针对批处理中常用符号的详细解释,每个符号都有解释及相应的举例,希望通过比较系统的讲述,能让新手尽快入门。在这篇帖子中, 我对常用符号的讲解做如下限定:1、收集批处理中经常用到的符号;2、每个常用符号, 只讲述最常用的功能; 深入的用法留待将来介绍;这样限定的原因, 一是让新手系统地接触最常用符号的常用功能,不至于一开始就陷入技术细节中难以自拔;二是有些符号的用法非常罕见,没有特定的需求可以忽略掉,比如句柄复制符号; 三是有些高深的内容本人也没有完全消化,只解说一鳞半爪难免会误人子弟, 比如 set /a 中的 、! 等符号;如有遗漏或谬误, 请大家及时跟帖, 帮忙修正。
2、1、一般在它之后紧跟一条命令或一条语句,则此命令或语句本身在执行的时候不会显示在屏幕上。请把下面的代码保存为test.cmd文件, 然后运行,比较一下两条echo语句在屏幕上的输出差异:复制内容到剪贴板代码:echo apauseecho bpause执行结果如下:引用:C: Documentsand SettingsJM 桌面 echo aa请按任意键继续.b请按任意键继续.2、%、%百分号用在不同的场合,有不同的含义: 当百分号成对出现, 并且其间包含非特殊字符时,一般做变量引用处理, 比如: %var%、%str%。把以下代码保存为批处理文件,运行后观察屏幕显示结果:复制内容到剪贴板代码
3、:echo offset str=abcecho 变量 str 的值是:%str%pause在屏幕上将显示这样的结果:引用:变量 str 的值是:abc按任意键继续.另外,百分号作为变量引用还有一种特殊形式,那就是对形式参数的引用,此时,单个百分号后面紧跟0 9这10个数字,如%0、%1, 请看演示代码:复制内容到剪贴板代码:echo offif defined str goto nextset str=set /p str=请把文件拉到本窗口后回车:call %0 %str%pauseexit:nextclsecho 本批处理文件完整路径为: %0echo 拖到本窗口的文件完整路径为:%1g
4、oto :eof 出现在 set /a 语句中时,表示两数相除取余数, 也就是所谓的模运算, 它在命令行窗口和批处理文件中的写法略有差异:在命令行窗口中,只需要单个的% , 在批处理文件中, 需要连续两个百分号, 写成% %。例如:在命令行窗口中, 运行 set /a num=4%2 , 则结果将显示0 , 因为4 除以2的余数为0; 如果保存为批处理文件, 则此语句将略有改变:复制内容到剪贴板代码:echo offset /a num=4%2echo 4除以2的余数为 %num%pause 转义符号:如果要显示% 本身时,需要在前面用% 来转义。例如:复制内容到剪贴板代码:echo offe
5、cho 一个百分号:%echo 两个百分号:%echo 三个百分号:%pause3、: 、: 以: 打头的单个的: 表示该行是一个标签, 它之后的内容是一个标签段,如:test, 则表示:test之下的内容是标签段, 而t est是这个标签段的名,可以用 goto test 、g oto :test 跳转到该标签段或用call :test 调用该子过程; 而连续两个冒号打头表示该行内容为注释内容,实际名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - -
6、- - - - - 上, : 是个无效的标签名, :加上空格同样可以起到注释的作用,此时,:的功能和注释命令r em相同; 但是,rem 注释语句中的某些命令符号如重定向符号和管道符号还是会执行,而如果用:来注释的时候, 与: :同处一行的所有命令或符号直接被命令解释器忽略掉,无形中提高了注释的兼容性和整个程序的执行效率,并且在众多的命令语句中更显得醒目,所以,注释语句推荐使用: :的格式。 在 set 语句中:和 同时使用时, : 起到截取字符串的功能。假设set str=abcde, 那么,set var=%str:0,1% 表示截取字符串a bcde的第一个字符;和= 同时使用时, 起到
7、替换字符串的功能。假设:set str=abc:de, 那么,set var=%str:a=1% 则表示把字符串a bc:de中的a 替换为1, set var=%str:=2% 则表示把字符串abc:de中的:替换为2;4、 用在 set 语句中,和: 同时使用时, 起到截取字符串的功能,请参考上一条的解释; 用在 set /a 语句中时,它是一元运算符号, 表示将操作数字按位取反,例如,set /a num=1的执行结果是- 2, set /anum=0的结果是-1 用在f or语句中,表示增强for的功能,能够提取到更多的信息。例如:在批处理文件的for语句中:%i表示去掉第一对外侧引号
8、, %zi表示获取文件的大小( 以字节为单位) , %ni表示获取文件名, %xi表示获取扩展名( 带点号) 它们可以组合使用, 如%nxi表示获取文件名和后缀名。5、 、 一般而言, 表示用新内容覆盖原文件内容,表示向原文件追加内容,此时,它们以重定向符号的身份出现;如果用在 set /a语句中, 则 表示分组, 表示逻辑移位;6、|一般而言, 它以管道符号的身份出现,表示把在它之前的命令或语句的执行结果作为在它之后的命令或语句的处理对象,简而言之, 就是把它之前的输出作为它之后的输入,例如: echo abcd|findstr b,表示把e cho abcd的执行结果, 作为f indst
9、r b 的执行对象, 也就是在字符串abcd中查找b字符; 如果t est.txt中有a bcd字符串,则该语句与 findstr b test.txt 具有同样的效果;7、一般而言, 以转义字符的身份出现。因为在cmd环境中,有些字符具备特殊功能, 如 、 表示重定向, |表示管道, &、& &、| |表示语句连接它们都有特定的功能,如果需要把它们作为字符输出的话,echo 、e cho| 之类的写法就会出错c md解释器会把它们作为具有特殊功能的字符对待,而不会作为普通字符处理,这个时候, 就需要对这些特殊字符做转义处理:在每个特殊字符前加上转义字符 , 因此,要输出这些特殊字符, 就需要
10、用 echo 、e cho |、e cho |、e cho 之类的格式来处理;8、&一般而言, &表示两条命令或语句同时执行的意思。如echo a&echo b, 将在屏幕上同时显示a 和b 字符。当几条语句含义近似或作用相同且没有先后的顺序之别时,启用& 符号连接这些语句将会增加程序的可读性;9、& &、| |这是一对含义截然相反的命令符,&表示如果它之前的语句成功执行,将执行它之后的语句, 而| |则表示如果它之前的语句执行失败, 将执行它之后的语句; 在某些场合, 它们能替代 ife lse 语句; 例如:复制内容到剪贴板代码:echo offmd test&echo 成功创建文件夹te
11、st|echo创建文件夹test失败pause效果等同于如下代码:复制内容到剪贴板代码:echo offmd testif %errorlevel%=0 (echo 成功创建文件夹test)else echo 创建文件夹t est失败pause10、( )小括号对经常出现在f or语句和i f语句中,还有一些特定场合; 在f or和i f语句中属于语句格式的要求,例如: for %i in(语句1) do(语句2): 在这条语句中, 语句1 必须用括号对包围, 而语句2的括号对则可视情况予以抛弃或保留:如果语句2是单条语句或用&、& &、| |等连接符号连接的多条语句,括号对可以抛弃, 如果语
12、句2 是有逻辑先后关系的多条语句集合,则必须保留括号对,并且,多条语句必须断行书写; 例如:复制内容到剪贴板代码:echo offfor %i in (a b c) do echo %i&echo -pause也可以改写为:复制内容到剪贴板代码:echo offfor %i in (a b c) do (echo %i&echo -)pause if 条件 (语句1 ) else(语句2): 如果没有else部分,则语句1 的括号对可有可无; 如果有e lse部分,则语句1 中的括号对必须保留, 此时, 语句2中的括号对保留与否, 和上一点类似。例如:复制内容到剪贴板代码:echo offif
13、 exist test.txt echo 当前目录下有test.txtpause复制内容到剪贴板代码:echo offif exist test.txt (echo 当前目录下有test.txt) elseecho 当前目录下没有test.txtpause复制内容到剪贴板名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - 代码:echo offif exist test.txt (echo 当前目录下有test.txt) else(
14、echo 当前目录下没有test.txtpauseclsecho 即将创建t est.txt文件cd.test.txt&echo 成功创建t est.txt)pause 特定场合下使用括号对, 不但可以使代码逻辑清晰,增强可读性, 还可能会减少代码量。比如用echo语句构造多行文本内容的时候:复制内容到剪贴板代码:echo off(echo 第一行echo 第二行echo 第三行)test.txtstart test.txt如果不使用括号对的话,则需要使用如下代码:复制内容到剪贴板代码:echo offecho 第一行 test.txtecho 第二行 test.txtecho 第三行 tes
15、t.txtstart test.txt11、+ 、-、* 、/在 set /a语句中,这些符号的含义分别为: 加、减、乘、除。例如: set /a num=1+2-3* 4/5。需要注意的是, 这些运算符号遵循数学运算中的优先级顺序: 先乘除后加减, 有括号的先算括号, 并且,直接忽略小数点, 因此,刚才那个算式的结果是1而不是0或0.6。另外,有可能会在代码中看到这样的写法:set /anum+=1、s et /a num-=1、s et /anum*=1 和 set /a num/=1, 这些表示累加、累减、累乘、累除,步长都是1 , 展开后的完整写法为: set /a num=num+1
16、、s et /a num=num-1、s et /a num=num*1 和 set /anum=num/1(set /a 语句中,变量引用可以忽略百分号对或感叹号对,set /anum=%num%+1 与 set /anum=num+1 等同)12、e qu、n eq、l ss、l eq、g tr、g eq这几个命令符是if语句中常用到的数值比较符号,取自英文的关键字母, 具体的含义为:引用:命令符号 含义 英文解释EQU 等于equalNEQ 不等于not equalLSS 少于 less thanLEQ 少于或等于less than or equalGTR 大于 greater thanGEQ 大于或等于greater than or equal名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -