《cmd中的特殊符号.doc》由会员分享,可在线阅读,更多相关《cmd中的特殊符号.doc(8页珍藏版)》请在金锄头文库上搜索。
1、cmd中的特殊符号2007年05月31日 星期四 00:46隐藏命令的回显。在for中表示使用增强的变量扩展;在set中表示使用扩展环境变量指定位置的字符串;在set/a中表示按位取反。%使用两个%包含一个字符串表示引用环境变量。比如一个%time%可以扩展到当前的系统时间;单个%紧跟0-9的一个数字表示引用命令行参数;用于for中表示引用循环变量;连续的两个%表示执行时脱为一个%。取消转义字符,即将所有转义字符的转义作用关闭。比如要在屏幕显示一些特殊的字符,比如 | 等时,就可以在其前面加一个符号来显示这个后面的字符了,就是显示一个,|就是显示一个|字符了;在set/a中是按位异;在find
2、str/r的中表示不匹配指定的字符集。&命令连接字符。比如我要在一行文本上同时执行两个命令,就可以用&命令连接这两个命令;在set/a中是按位与。*代表任意个任意字符,就是我们通常所说的通配符;比如想在c盘的根目录查找c盘根目录里所有的文本文件(.txt),那么就可以输入命令dir c:*.txt;在set/a中是乘法。比如set/a x=4*2,得到的结果是8;在findstr/r中表示将前一个字符多次匹配。()命令包含或者是具有优先权的界定符吧,比如for命令要用到这个(),我们还可以在if,echo等命令中见到它的身影;-范围表示符,比如日期的查找,for命令里的tokens操作中就可以
3、用到这个字符;在findstr/r中连接两个字符表示匹配范围;-跟在某些命令的/后表示取反向的开关。+主要是在copy命令里面会用到它,表示将很多个文件合并为一个文件,就要用到这个+字符了;在set/a中是加法。|管道符。就是将上一个命令的输出,作为下一个命令的输入.dir /a/b | more就可以逐屏的显示dir命令所输出的信息;在set/a中是按位或;在帮助文档中表示其前后两个开关、选项或参数是二选一的。:标签定位符,可以接受goto命令所指向的标签。比如在批处理文件里面定义了一个:begin标签,用goto begin命令就可以转到:begin变迁后面来执行批处理命令了。 界定符,在
4、表示带有空格的路径时常要用来将路径括起来,在一些命令里面也需要 符号;在for/f中将表示它们包含的内容当作字符串分析;在for/f usebackq表示它们包含的内容当作文件路径并分析其文件的内容;在其它情况下表示其中的内容是一个完整的字符串,其中的、&、|、空格等不再转义。/表示其后的字符(串)是命令的功能开关(选项)。比如dir /s/b/a-d表示dir命令指定的不同的参数;在set/a中表示除法。 lxmxn.txt将dir命令的结果输出到lxmxn.txt这个文本文件中去;在findstr/r中表示匹配单词的右边界,需要配合转义字符使用。命令重定向符。将其前面的命令的输出结果重新定
5、向到其后面的设备中去,后面设备中的内容没有被覆盖。NUL 1NUL 做简单解释这句代码的大意是指将 %mhnet% 指定的目录删除,/s 代表删除其中的子目录, /q 表示删除目录树时不提示确认, 1nul 表示将正确删除目录树的信息禁止输出,2nul 表示将删除过程中的错误信息禁止输出其中的1与2都是代表某个数据流输入输出的地址(NT CMD 称之为句柄,MSDOS称之为设备),下表(引自WinXP帮助文档“使用命令重定向操作符 (Redirection Operators”一节))将列出可用的句柄。句柄 句柄的数字代号 说明 STDIN 0 键盘输入 STDOUT 1 输出到命令提示符窗口
6、 STDERR 2 错误输出到命令提示符窗口 UNDEFINED 3-9 这些句柄由应用程序和各个具体工具单独定义0 键盘输入 1 输出到命令提示符窗口 2 错误输出到命令提示符窗口 3-9 这些句柄由应用程序和各个具体工具单独定义。 2 nul 表示程序出错的信息也不显示。call attrib -r -h c:autoexec.bat nul这句其实是:call attrib -r -h c:autoexec.bat 1 nul这些1,2,0等等都是句柄,说白了就是代号,你只要知道1是代表输出信息,2是代表出错信息,0是代表键盘输入就行了。如果有什么不明白的可以多看看帮助与支持。命令行对重
7、定向符号出现的位置不做过多限定,只要重定向符号后紧随“字符设备”即可,故以下语句等效: echo Hello World hello.txt echo Hello Hello.txt World echo Hello.txt Hello World hello.txt echo Hello World 在NT系列命令行中,重定向的作用范围由整个命令行转变为单个命令语句,受到了命令分隔符&,&,|和语句块的制约限制。 echo Message1 msg1.txt & echo Message2 msg2.txt if %target%= (echo message to screen ) els
8、e (echo message to file %target%) 综上所述,nul 意为将此句命令所产生的标准输出请求重新定向到空设备中,而因为此设备的缄默特性,即相当于将此语句的输出信息屏蔽(并非隐藏);而 2nul 则是将程序执行错误时的标准错误信息输出请求重定向后屏蔽。它们联合使用,即为将此语句所可能产生的所有输出信息屏蔽。“重定向”是MSDOS起就存在的命令行特性,负责将指定命令或语句所产生的输入输出请求由缺省的“控制台”转交给其它的“设备”来完成,它的启动标志是“重定向符号”(包括“,”三个,其各自意义见1)出现在句中。 一般的命令行程序输入输出请求都通过内部定义三个“端口”(在N
9、T下称为“句柄”,在DOS下未定义)来完成,分别为标准输入stdin、标准输出stdout、标准错误stderr。它们通常指向的设备为控制台(console,代码为CON),其中stdin指向控制台的键盘,stdout/stderr指向控制台的监视器。因此,控制台通常即指键盘与监视器的联合体,这是在早期大型机的终端机上所体现出来的概念。其中的stdin可被、重定向,而stderr在DOS下不可直接重定向,只有通过ctty或其它命令将系统控制权转交给其它设备的方式,来间接完成。 “设备”是指可控制PC硬件或端口的设备驱动程序或端口代码,它通常由系统底层或硬件驱动程序实现和支持。比如IO.SYS实现的控制台CON、系统时钟CLOCK$、未知设备CONFIG$、第一串口AUX、第一并口PRN、所有串口COM1COM4、所有并口LPT1LPT3、可用盘符A:-X:以及上文提到的空设备NUL。还有许多其它设备,比如HIMEM.SYS实现的XMSXXXX0,EMM386.EXE实现的EMMX