日期:2014-05-17  浏览次数:21011 次

Windows批处理常用符号

????? 1.@ 命令行回显屏蔽符?
?????? ECHO OFF可以关闭掉整个批处理命令的回显,但不能关掉ECHO OFF这个命令本身,现在我们在ECHO OFF这个命令前加个@,就可以达到所有命令均不回显的要求。
??????该符号在批处理中的作用是关闭当前行命令的回显,也就是不显示执行的是什么命令,只显示命令的结果!

????? 2.> 重定向符 ????? ?将>之前的命令执行的结果输出到>之后指定的设备或文件中去,特定的文件或标准输出(stdout--默认为系统控制台),若文件中有数据则覆盖。
??????>> 重定向符
??????????? 需要显示的数据追加到指定的输出文件之中,而不覆盖原来的内容。
????? < 输入重定向
??????????? 将输入信息来源重定向为指定的设备或文件,系统默认接收键盘输入。
??????>&将一个句柄的输出写入到另一个句柄的输入中
????? <&刚好和>&相反,从一个句柄读取输入并将其写入到另一个句柄输出中
??????????? 常用句柄0、1、2,未定义句柄3-9
??????????? 其中的1与2都是代表某个数据流输入输出的地址(NT CMD 称之为句柄,MSDOS称之为设备)。
  ??????句柄0:标准输入stdin,键盘输入
  ????? 句柄1:标准输出stdout,输出到命令提示符窗口(console,代码为CON)
  ????? 句柄2:标准错误stderr,输出到命令提示符窗口(console,代码为CON)
  ????? 其中的stdin可被<重定向,stdout可被>、>>重定向,而stderr在DOS下不可直接重定向,只有通过ctty或其它命令将系统控制权转交给其它设备的方式,来间接完成。
??????注意:如果用在 set /a 语句中,则>表示分组,>>表示逻辑移位。

@echo off
@rem echo 关闭命令显示,@关闭echo off本身的显示
rem ==============设置标题title=================
rem -使用该文件的名称作为标题
title 测试bat的文件(test.bat--重定向)
rem ===============重定向符>=====================
rem 将当前文件的内容输出到指定的文件tb.txt而非控制台
type d:\test\bak\tt.txt>d:\test\bak\tb.txt
rem 将特定的字符串"Hello China "(注意最后的空格)写入到指定的文件
echo Hello China >d:\test\bak\tc.txt

rem ===============重定向符>>====================
echo hello>d:\test\bak\td.txt
echo world>>d:\test\bak\td.txt

rem ===============重定向符<=====================
rem 重新设定当前时间
echo 2010-01-12>d:\test\bak\te.txt
date <d:\test\bak\te.txt
del d:\test\bak\te.txt

rem ===============重定向符<=====================
rem 如果e盘存在则将其下面的文件信息输出到te.txt 否则将错误信息输出到err.txt
dir e:\ 1>d:\test\bak\te.txt 2>d:\test\bak\err.txt

@pause

???? 3.| 命令管道符
????? 管道命令,将|之前的命令的输出作为|之后的命令的输入。
????? 格式:第一条命令 | 第二条命令 [| 第三条命令...]

@echo off
@rem echo 关闭命令显示,@关闭echo off本身的显示
rem ==============设置标题title=================
rem -使用该文件的名称作为标题
title 测试bat的文件(test.bat--管道命令)
rem =================管道命令|===================
rem 将显示tom001 tom002
rm d:\test\bak\t001.txt
echo tom001>d:\test\bak\t001.txt
echo neil001>>d:\test\bak\t001.txt
echo tom002>>d:\test\bak\t001.txt
echo neil002>>d:\test\bak\t001.txt
echo jerry>>d:\test\bak\t001.txt
type d:\test\bak\t001.txt | find "tom"

@pause

????? 4.^ 转义字符
??????对特殊符号"<",">","&"的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅把他们当成符号而不使用他们的特殊意义。
??????另外,此转义字符还可以用作续行符号。?

@echo off
@rem echo 关闭命令显示,@关闭echo off本身的显示
rem ==============设置标题title=================
rem -使用该文件的名称作为标题
title 测试bat的文件(test.bat--转义字符)
rem =================转义字符^==================
rem 用来转义 输出hello china > d:\test\bat\t.txt
echo hello china ^> d:\test\bat\t.txt
rem 用来续行行 输出结果为 hellochinaluchunli
echo hello^
china^
luchunli

@pause

???? 5.& 组合命令
??????????? 允许在一行中使用2个以上不同的命令,当第一个命令执行失败了,也不影响后边的命令执行。
????? ????? 语法:第一条命令 & 第二条命令 [& 第三条命令...]
????? ?&& 组合命令
???? ??????? 用这种方法可以同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令
??????????? ?语法:第一条命令 && 第二条命令 [&& 第三条命令...]
???????????? 这个命令和上边的类似,但区别是,第一个命令失败时,后边的命令也不会执行。??
????? || 组合命令
???????????? 用这种方法可以同时执行多条命令,当一条命令失败后才执行第二条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令。
???????????? 语法:第一条命令 || 第二条命令 [|| 第三条命令...]??
????? 提示:组合命令和重定向命令一起使用必须注意优先级
  管道命令的优先级高于重定向命令,重定向命令的优先级高于组合命令。

@echo off
@rem echo 关闭命令显示,@关闭echo off本身的显示
rem ==============设置标题title=================
rem -使用该文件的名称作为标题
title 测试bat的文件(test.bat--组合命令)
rem =================组合命令&==================
dir d:\test\aa & dir d:\test\all
rem k盘不存在 不影响命令执行
dir k:\ & dir d:\test\all

rem ===========