文档详情

批处理中的特殊符号及其作用.doc

发布:2020-02-23约5.46千字共6页下载文档
文本预览下载声明
引用自:/dgnankai/blog/item/5274396ef8978ede81cb4a9d.html 批处理特殊符号的作用: 1、%是个ESCAPE字符,通常将之译为转义字符,但也有更形象的译名脱逸字符、逃逸字符等。也就是说%不仅仅将与其相关的特定字符串转义并替换为特定字符串,而且自身也会被“脱逸”。而且类似于C语言中的转义字符\,双%会转义并脱逸为单%,四%则脱为双%。 2、for本身是一个特殊的命令,类似于一个特化的命令解释器,因为它的功能实现需要执行多条语句,因此它必须也具有对命令行(特指do后的命令行)分析处理的功能。而command/cmd实现for时自然会借用自身原有的命令行分析模块,因此for具有二级转义的特性,for中do后的语句被分两级分析和解释,第一级在command/cmd读入并解释for命令行时,第二级在for读入并解释do命令时,它通常会对同一命令行的进行多次解释。 然后,我们可以注意到,在do中使用命令行参数变量和环境变量时,不需要双%,那是因为,这些变量在经过第一级转义后,被替换成特定的不变的字符串常量,参与for循环的所有执行过程;而替代变量则要求在执行(do后的子命令行中)过程中不断的动态变化,而这个变化自然仍需要通过脱逸字符来实现,因此使用双%就是成了必然的选择。 另外,还需要注意到,在命令行中使用for时不需要双%,这源于命令解释器对命令行与批处理的处理方式不同。在早期的DOS版本中,%在命令行中不被视为转义字符,所以不会被转义和脱逸,所以当时无法在命令行直接引用环境变量。而使用for时,只需要一个%供for进行转义和脱逸就够了。在以后的命令解释器版本中,加入了命令行转义的支持(主要是环境变量的支持),但命令行for使用单%的传统仍然保留了下来。 而 cmd中的变量延迟替换是属于特殊的情况,但不违背以上的转义原则,只是for中的环境变量不再是常量了。 rmdir /S /Q %mhnet% 2NUL 1NUL 做简单解释 这句代码的大意是指将 %mhnet% 指定的目录删除,/s 代表删除其中的子目录, /q 表示删除目录树时不提示确认, 1nul 表示将正确删除目录树的信息禁止输出,2nul 表示将删除过程中的错误信息禁止输出 其中的1与2都是代表某个数据流输入输出的地址(NT CMD 称之为句柄,MSDOS称之为设备),下表(引自WinXP帮助文档“使用命令重定向操作符 (Redirection Operators”一节)将列出可用的句柄。 句柄 句柄的数字代号 说明 STDIN 0 键盘输入 STDOUT 1 输出到命令提示符窗口 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是代表键盘输入就行了。 如果有什么不明白的可以多看看帮助与支持。 例如: 屏蔽正常提示信息 del . 1nul (或者del . nul) 屏蔽出错提示信息 del . 2nul 如果两种信息都要屏蔽 del . 1nul 2nul 命令行对重定向符号出现的位置不做过多限定,只要重定向符号后紧随“字符设备”即可,故以下语句等效: 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 else (echo message to file %target% 综上所述,nul 意为将此句命令所产生的标准输出请求重新定向到空设备中,而因为此设备的缄默特性,即相当于将此语句的输出信息屏蔽(并非隐藏);而 2nul 则是将程序执行错误时的标准错误信息输出请求重定向后屏蔽。它们联合使用,即为将此语句所可能产生的所有输出信息屏蔽。 “重定向”是MSDOS起就存在的命令行特性,负责将指定命
显示全部
相似文档