批处理特殊符号通配符与转义符
常⽤特殊符号
1、@命令⾏回显屏蔽符
2、%批处理变量引导符
3、>重定向符
4、>>重定向符
5、<、>、<&重定向符
6、|命令管道符
7、^转义字符
8、组合命令
9、&组合命令
10、||组合命令
11、""字符串界定符
12、,逗号
13、;分号
14、()括号
15、!感叹号
通配符(?和*)
常⽤来代替未具体指明的⽂件和数据。
代表单个字符。
*代表全部字符。
转义符
⽤在特殊符号之前,取消特殊字符的作⽤.
⽐如:
echo⾮常^&批处理
连字符&在此命令中只当作⼀个字符显⽰到屏幕中
如果不加^那么"批处理"将被当作命令执⾏
|(管道)传递符
当然是传递作⽤,将前⾯⼀条命令的执⾏结果传递给后⾯⼀条命令继续执⾏.
⽐如:
echo0123456|find"123"
将0123456传递给find查找123
||连接符
当前⾯的命令没有成功执⾏则执⾏后⾯的命令可以作判断选择⽤.
⽐如:
echo0123456|find"789"||echo字符中没有789
此命令的意思是在0123456中查找字符789,如果没有找到则继续执⾏后⾯的命令,
即在屏幕中显⽰"字符中没有789",如果找到了,也就是如果前⾯是的话则停⽌继续执⾏||后⾯的命令,⽽是在屏幕中直接显
⽰"".
&&连接符
当前⾯的命令成功执⾏再执⾏后⾯的命令
⽐如:
echo0123456|find"123"&&echo字符中含有123
这个命令跟||刚好相反.
&连接符
⽆论前⾯的命令是否成功执⾏都执⾏后⾯的
⽐如:
echo0123456|find"789"&echo字符中含有123
虽然没有成功到789但还是会执⾏echo命令
>定向符
将输出的内容重定向到指定(⽂本中)
⽐如
echo123456789>
输出字符串到中
如果是>nul则是输出到空设备中起屏蔽屏幕输出的作⽤
⽐如
pau>nul将命令的提⽰屏蔽掉
>>定向符(追加)
将输出内容写⼊指定(⽂本中)
注意,">"将覆盖⽂本中原有内容
">>"则是在⽂本的最后添加内容,
⽐如
echo123>
echo456>>
⽂本中有两⾏分别是123和456
如果echo456>
那么原有⽂本中的123将会替换成456
<输⼊定向符
从指定的(⽂本)输⼊内容
⼀般⽤于t/p
⽐如
echo456>
t/pwind=<
这样第⼀⾏内容就被赋值给wind了
本来t/p这个命令是⽤来设置给⽤户输⼊字符的,但是=后⽤<,
意思是从⽂件中读取信息给SET/P,⽽不需要⽤户输⼊.
--------------------------------------------------------------------------------------------------------------------------------------------------------
较详细的⼀篇
这是⼀篇针对批处理中常⽤符号的详细解释,每个符号都有解释及相应的举例,希望通过⽐较系统的讲述,能让新⼿尽快⼊门。
在这篇帖⼦中,我对常⽤符号的讲解做如下限定:
1、收集批处理中经常⽤到的符号;
2、每个常⽤符号,只讲述最常⽤的功能;深⼊的⽤法留待将来介绍;
这样限定的原因,⼀是让新⼿系统地接触最常⽤符号的常⽤功能,不⾄于⼀开始就陷⼊技术细节中难以⾃拔;⼆是有些符号的⽤法⾮常
罕见,没有特定的需求可以忽略掉,⽐如句柄复制符号;三是有些⾼深的内容本⼈也没有完全消化,只解说⼀鳞半⽖难免会误⼈⼦弟,⽐如
t/a中的^、!等符号;
如有遗漏或谬误,请⼤家及时跟帖,帮忙修正。
————————————————————————————————————————————
1、@
⼀般在它之后紧跟⼀条命令或⼀条语句,则此命令或语句本⾝在执⾏的时候不会显⽰在屏幕上。请把下⾯的代码保存为⽂件,
然后运⾏,⽐较⼀下两条echo语句在屏幕上的输出差异:
2.@pau
3.@echob
4.@pau
复制代码
执⾏结果如下:
C:DocumentsandSettingsJM桌⾯>echoa
a
请按任意键继续...
b
请按任意键继续...
2、%、%%
百分号⽤在不同的场合,有不同的含义:
①当百分号成对出现,并且其间包含⾮特殊字符时,⼀般做变量引⽤处理,⽐如:%var%、%str%。把以下代码保存为批处理⽂件,运
⾏后观察屏幕显⽰结果:
1.@echooff
=abc
变量str的值是:%str%
复制代码
在屏幕上将显⽰这样的结果:
变量str的值是:abc
按任意键继续...
另外,百分号作为变量引⽤还有⼀种特殊形式,那就是对形式参数的引⽤,此时,单个百分号后⾯紧跟0~9这10个数字,如%0、%1,
请看演⽰代码:
1.@echooff
nedstrgotonext
=
/pstr=请把⽂件拉到本窗⼝后回车:
"%~0"%str%
8.
9.:next
本批处理⽂件完整路径为:"%~0"
拖到本窗⼝的⽂件完整路径为:"%~1"
:eof
复制代码
②出现在t/a语句中时,表⽰两数相除取余数,也就是所谓的模运算,它在命令⾏窗⼝和批处理⽂件中的写法略有差异:在命令⾏窗⼝
中,只需要单个的%,在批处理⽂件中,需要连续两个百分号,写成%%。
例如:在命令⾏窗⼝中,运⾏t/anum=4%2,则结果将显⽰0,因为4除以2的余数为0;如果保存为批处理⽂件,则此语句将略有改
变:
1.@echooff
/anum=4%%2
4除以2的余数为%num%
复制代码
③转义符号:如果要显⽰%本⾝时,需要在前⾯⽤%来转义。例如:
1.@echooff
⼀个百分号:%%
两个百分号:%%%%
三个百分号:%%%%%%
复制代码
3、:、::
①以:打头的单个的:表⽰该⾏是⼀个标签,它之后的内容是⼀个标签段,如:test,则表⽰:test之下的内容是标签段,⽽test是这个标签段
的名,可以⽤gototest、goto:test跳转到该标签段或⽤call:test调⽤该⼦过程;⽽连续两个冒号打头表⽰该⾏内容为注释内容,实际
上,::是个⽆效的标签名,:加上空格同样可以起到注释的作⽤,此时,::的功能和注释命令rem相同;但是,rem注释语句中的某些命令符号
如重定向符号和管道符号还是会执⾏,⽽如果⽤::来注释的时候,与::同处⼀⾏的所有命令或符号直接被命令解释器忽略掉,⽆形中提⾼了注
释的兼容性和整个程序的执⾏效率,并且在众多的命令语句中更显得醒⽬,所以,注释语句推荐使⽤::的格式。
②在t语句中:和~同时使⽤时,:起到截取字符串的功能。假设tstr=abcde,那么,tvar=%str:~0,1%表⽰截取字符串abcde的
第⼀个字符;和=同时使⽤时,起到替换字符串的功能。假设:tstr=abc:de,那么,tvar=%str:a=1%则表⽰把字符串abc:de中的a替换
为1,tvar=%str::=2%则表⽰把字符串abc:de中的:替换为2;
4、~
①⽤在t语句中,和:同时使⽤时,起到截取字符串的功能,请参考上⼀条的解释;
②⽤在t/a语句中时,它是⼀元运算符号,表⽰将操作数字按位取反,例如,t/anum=~1的执⾏结果是-2,t/anum=~0的结果
是-1
③⽤在for语句中,表⽰增强for的功能,能够提取到更多的信息。例如:在批处理⽂件的for语句中:%%~i表⽰去掉第⼀对外侧引
号,%%~zi表⽰获取⽂件的⼤⼩(以字节为单位),%%~ni表⽰获取⽂件名,%%~xi表⽰获取扩展名(带点号)……它们可以组合使⽤,
如%%~nxi表⽰获取⽂件名和后缀名。
5、>、>>
⼀般⽽⾔,>表⽰⽤新内容覆盖原⽂件内容,>>表⽰向原⽂件追加内容,此时,它们以重定向符号的⾝份出现;如果⽤在t/a语句
中,则>表⽰分组,>>表⽰逻辑移位;
6、|
⼀般⽽⾔,它以管道符号的⾝份出现,表⽰把在它之前的命令或语句的执⾏结果作为在它之后的命令或语句的处理对象,简⽽⾔之,就
是把它之前的输出作为它之后的输⼊,例如:echoabcd|findstr"b",表⽰把echoabcd的执⾏结果,作为findstr"b"的执⾏对象,也就是在字
符串abcd中查找b字符;如果中有abcd字符串,则该语句与findstr"b"具有同样的效果;
7、^
⼀般⽽⾔,^以转义字符的⾝份出现。因为在cmd环境中,有些字符具备特殊功能,如>、>>表⽰重定向,|表⽰管道,&、&&、||表⽰语
句连接……它们都有特定的功能,如果需要把它们作为字符输出的话,echo>、echo|……之类的写法就会出错——cmd解释器会把它们作
为具有特殊功能的字符对待,⽽不会作为普通字符处理,这个时候,就需要对这些特殊字符做转义处理:在每个特殊字符前加上转义字符
^,因此,要输出这些特殊字符,就需要⽤echo^>、echo^|、echo^|^|、echo^^……之类的格式来处理;
8、&
⼀般⽽⾔,&表⽰两条命令或语句同时执⾏的意思。如echoa&echob,将在屏幕上同时显⽰a和b字符。当⼏条语句含义近似或作⽤相
同且没有先后的顺序之别时,启⽤&符号连接这些语句将会增加程序的可读性;
9、&&、||
这是⼀对含义截然相反的命令符,&&表⽰如果它之前的语句成功执⾏,将执⾏它之后的语句,⽽||则表⽰如果它之前的语句执⾏失败,
将执⾏它之后的语句;在某些场合,它们能替代if……el……语句;例如:
1.@echooff
&&echo成功创建⽂件夹test||echo创建⽂件夹test失败
复制代码
效果等同于如下代码:
1.@echooff
"%errorlevel%"=="0"(echo成功创建⽂件夹test)elecho创建⽂件夹test失败
复制代码
10、()
⼩括号对经常出现在for语句和if语句中,还有⼀些特定场合;在for和if语句中属于语句格式的要求,例如:
①for%%iin(语句1)do(语句2):在这条语句中,语句1必须⽤括号对包围,⽽语句2的括号对则可视情况予以抛弃或保留:如果语句2
是单条语句或⽤&、&&、||等连接符号连接的多条语句,括号对可以抛弃,如果语句2是有逻辑先后关系的多条语句集合,则必须保留括号
对,并且,多条语句必须断⾏书写;例如:
1.@echooff
%%iin(abc)doecho%%i&echo--------
复制代码
也可以改写为:
1.@echooff
%%iin(abc)do(
%%i
4.&echo--------
5.)
复制代码
②if条件(语句1)el(语句2):如果没有el部分,则语句1的括号对可有可⽆;如果有el部分,则语句1中的括号对必须保留,此时,语
句2中的括号对保留与否,和上⼀点类似。例如:
1.@echooff
o当前⽬录下有
复制代码
1.@echooff
(echo当前⽬录下有)elecho当前⽬录下没有
复制代码
1.@echooff
(echo当前⽬录下有)el(
当前⽬录下没有
即将创建⽂件
.>&&echo成功创建
8.)
复制代码
③特定场合下使⽤括号对,不但可以使代码逻辑清晰,增强可读性,还可能会减少代码量。⽐如⽤echo语句构造多⾏⽂本内容的时候:
1.@echooff
2.(
第⼀⾏
第⼆⾏
第三⾏
6.)>
复制代码
如果不使⽤括号对的话,则需要使⽤如下代码:
1.@echooff
第⼀⾏>
第⼆⾏>>
第三⾏>>
复制代码
11、+、-、*、/
在t/a语句中,这些符号的含义分别为:加、减、乘、除。例如:t/anum=1+2-3*4/5。需要注意的是,这些运算符号遵循数学运
算中的优先级顺序:先乘除后加减,有括号的先算括号,并且,直接忽略⼩数点,因此,刚才那个算式的结果是1⽽不是0或0.6。
另外,有可能会在代码中看到这样的写法:t/anum+=1、t/anum-=1、t/anum*=1和t/anum/=1,这些表⽰累加、累减、累
乘、累除,步长都是1,展开后的完整写法为:t/anum=num+1、t/anum=num-1、t/anum=num*1和t/anum=num/1(t/a语句
中,变量引⽤可以忽略百分号对或感叹号对,t/anum=%num%+1与t/anum=num+1等同)
12、equ、neq、lss、leq、gtr、geq
这⼏个命令符是if语句中常⽤到的数值⽐较符号,取⾃英⽂的关键字母,具体的含义为:
命令符号含义英⽂解释
EQU等于equal
NEQ不等于notequal
LSS少于lessthan
LEQ少于或等于lessthanorequal
GTR⼤于greaterthan
GEQ⼤于或等于greaterthanorequal
本文发布于:2022-12-29 01:08:48,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/50187.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |