1、讲起-1- “重定向”是自 MSDOS 起就被支持的命令行特性,负责将指定命令或语句所产生的输入输出请求由缺省的“控制台”转交给其它的“设备”来完成,它的启动标志是“重定向符号”(包括“, 将命令输出写入到文件或设备(例如打印机)中,而不是写在命令提示符窗口中。 将命令输出添加到文件末尾而不删除文件中的信息。& 将一个句柄的输出写入到另一个句柄的输入中。、重定向,而stderr 在 DOS 下不可直接重定向,只有通过 ctty 或其它命令将系统控制权转交给其它设备的方式,来间接完成。下表将列出可用的句柄。句柄 句柄的数字代号 说明STDIN 0 键盘输入STDOUT 1 输出到命令提示符窗口S
2、TDERR 2 错误输出到命令提示符窗口UNDEFINED 3-9 这些句柄由应用程序和各个具体工具单独定义。数字 0 到 9 代表前 10 个句柄。可以使用命令 Cmd.exe 运行程序并将前 10 个句柄中的任何一个重定向到该程序。要指定想使用的句柄,可在重定向操作符前面键入该句柄的数字。如果未定义句柄,则默认的 重定向输出操作符是 1。键入 或 c:file.txt 2&1复制句柄时,可以复制该句柄原状态的所有特性。例如,如果一个句柄具有只读访问的属性,则该句柄的所有副本都具有只读访问属性。不能将一个具有只读访问属性的句柄复制为另一个具有只写访问属性的句柄。重定向命令输出 ( 的默认句柄
3、 重定向命令输出 ()几乎所有的命令都将输出发送到命令提示符窗口。即使将输出发送到驱动器或打印机的命令也会在命令提示符窗口显示消息和提示。要将命令输出从命令提示符窗口重定向到文件或设备,请使用 操作符。可以在许多命令中使用该操作符。例如,要将 dir 输出重定向到 Dirlist.txt,请键入:dirdirlist.txt如果 Dirlist.txt 不存在,Cmd.exe 将创建该文件。如果 Dirlist.txt 存在,Cmd.exe 将使用 dir 命令的输出替换文件中的信息。要运行 netsh routing dump 命令,然后将命令输出发送到 Route.cfg,请键入:nets
4、h routing dumpc:route.cfg 操作符可以打开具有只写访问属性的指定文件。所以,不能使用该操作符读取文件。例如,如果使用重定向 &0 启动程序,则所有试图写入句柄 1 的操作都将失败,因为句柄 0 最初是以只读访问大开的。注意 1 是 重定向输出操作符的默认句柄。 使用 search.txt 2& 操作符重定向输出和复制如果将输出重定向到文件且指定了现有的文件名,Cmd.exe 将以只写方式打开文件并覆盖该文件内容。如果指定了句柄,Cmd.exe 将文件复制到现有句柄中。要将用户定义句柄 3 复制到句柄 1,请键入:&3要将包括句柄 2(即 STDERR)的所有输出从 ip
5、config 命令重定向到句柄 1(即 STDOUT),然后将输出重定向到 Output.log,请键入:ipconfig.exeoutput.log 2&1使用 重定向操作符追加输出要从命令中将输出添加到文件末尾而不丢失文件中已存在的任何信息,请使用两个连续的大于号(即 )。例如,下面的命令可以将由 dir 命令生成的目录列表追加到 Dirlist.txt 文件:dirdirlist.txt要将 netstat 命令的输出追加到 Tcpinfo.txt 的末尾,请键入:netstattcpinfo.txt使用管道操作符 (|)管道操作符 (|) 可以提取一个命令的输出(默认情况下是 STDO
6、UT),然后将其导入另一个命令的输入中(默认情况下是 STDIN)。例如,下面的命令将对目录分类:dir | sort在本例中,将同时启动两个命令,但随后 sort 命令会暂停,直到它接收到 dir 命令的输出为止。sort 命令使用 dir 命令的输出作为输入,然后将输出发送到句柄 1(即 STDOUT)。合并带重定向操作符的命令可以通过合并带有其它命令和文件名的筛选器命令创建自定义命令。例如,可以使用以下命令存储包含“LOG”字符串的文件名:dir /b | find “LOG“ loglist.txtdir 命令的输出通过 find 筛选器命令发送。包含字符串 “LOG“ 的文件名作为文
7、件名列表(例如,NetshConfig.log、Logdat.svd 和 Mylog.bat)存储在文件 Loglist.txt 中。要在相同命令中使用多个筛选器,请使用管道 (|) 分隔筛选器。例如,下面的命令将搜索 C 盘上的每个目录以查找包含 “LOG“ 字符串的文件名,并且在命令提示符窗口中每次显示一屏:dir c: /s /b | find “LOG“ | more利用管道 (|) 可以将 Cmd.exe 导向为通过 find 筛选器命令发送 dir 命令输出。find 命令只选择包含字符串 “LOG“ 的文件名。more 命令可以显示由 find 命令选择的文件名(在命令提示符窗口
8、中每次显示一屏)。、屏蔽输出信息“设备”是指可控制 PC 硬件或端口的设备驱动程序或端口代码,它通常由系统底层或硬件驱动程序实现和支持。比如 IO.SYS 实现的控制台 CON、系统时钟 CLOCK$、未知设备 CONFIG$、第一串口 AUX、第一并口 PRN、所有串口COM1COM4、所有并口 LPT1LPT3、可用盘符 A:-X:以及上文提到的空设备NUL。还有许多其它设备,比如 HIMEM.SYS 实现的 XMSXXXX0,EMM386.EXE 实现的 EMMXXXX0,IFSHLP.SYS 实现的 IFS$HLP$等。在这些设备中,可以处理输入输出信息的很少,只有 CON、NUL 以
9、及连接有输入输出硬件(打印机、MODEM 等)的串口或并口设备。它们被称为“字符设备”,而磁盘文件也作为一种特殊的字符设备列选其中,这就大大扩充了重定向的自由度与实用性,以致很多人也将重定向称为“文件重定向”。空设备 NUL 是一个特殊的设备,因为它没有可控制的 PC 硬件或端口,而只是一个虚构的的设备或端口,它仅存在于软件层面。正因为如此,它可以接受所有重定向的输入输出请求而不给出任何回应,在 NT 下不会给出任何输入信息而结束输入请求,在 DOS 下则反复填充 127 个二进制字节 1(显示为A)后终止响应。命令行对重定向符号出现的位置不做过多限定,只要重定向符号后紧随“字符设备”即可,故
10、以下语句等效:echo Hanye GuxingC:Chuxuezhe.txtecho HanyeC:Chuxuezhe.txt GuxingechoC:Chuxuezhe.txt Hanye GuxingC:Chuxuezhe.txt echo Hanye Guxing在 NT 系列命令行中,重定向的作用范围由整个命令行转变为单个命令语句,受到了命令分隔符&,&,|和语句块的制约限制。echo Message1 msg1.txt & echo Message2 msg2.txtif “%target%“=“ (echo message to screen ) else (echo messa
11、ge to file %target%)现在,我们以 del 命令为例,讲一下命令重定向操作符 的使用。C:WINDOWSsystem32命令提示符本文转自http:/ Windows XP 版本 5.1 2600版权所有 1985-2001 Microsoft Corp.本文转自 http:/ and Settings寒夜孤星echo Hanye GuxingC:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星del C:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星说明:正常操作。C:WINDOWSsystem32命令提
12、示符本文转自http:/ Windows XP 版本 5.1 2600版权所有 1985-2001 Microsoft Corp.本文转自 http:/ and Settings寒夜孤星echo Hanye GuxingC:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星attrib +r C:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星del C:Chuxuezhe.txtC:Chuxuezhe.txt拒绝访问本文转自 http:/ and Settings寒夜孤星del /f C:Chuxuezhe.txt本文转自 h
13、ttp:/ and Settings寒夜孤星说明:由于文件被修改为只读属性,删除被拒绝。C:WINDOWSsystem32命令提示符本文转自http:/ Windows XP 版本 5.1 2600版权所有 1985-2001 Microsoft Corp.本文转自 http:/ and Settings寒夜孤星echo Hanye GuxingC:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星attrib +r C:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星del C:Chuxuezhe.txtC:Chuxuezhe
14、.txt拒绝访问C:Documents and Settings寒夜孤星del C:Chuxuezhe.txtC:Hanye.txt拒绝访问本文转自 http:/ and Settings寒夜孤星说明:由于文件被修改为只读属性,删除被拒绝。使用C:Hanye.txt,将结果输出。因为 1 是 重定向输出操作符的默认句柄。所以C:Hanye.txt 输出的仅是标准输出,不含错误输出。C:WINDOWSsystem32命令提示符本文转自http:/ Windows XP 版本 5.1 2600版权所有 1985-2001 Microsoft Corp.本文转自 http:/ and Setting
15、s寒夜孤星echo Hanye GuxingC:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星attrib +r C:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星del C:Chuxuezhe.txtC:Chuxuezhe.txt拒绝访问C:Documents and Settings寒夜孤星del C:Chuxuezhe.txtnul拒绝访问本文转自 http:/ and Settings寒夜孤星说明:由于文件被修改为只读属性,删除被拒绝。使用nul,将结果输出。因为1 是 重定向输出操作符的默认句柄。所以nul 输出
16、的仅是标准输出,不含错误输出。与上例的区别在于,本例没有将结果输出到文件。C:WINDOWSsystem32命令提示符本文转自http:/ Windows XP 版本 5.1 2600版权所有 1985-2001 Microsoft Corp.本文转自 http:/ and Settings寒夜孤星echo Hanye GuxingC:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星attrib +r C:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星del C:Chuxuezhe.txtC:Chuxuezhe.txt拒绝访
17、问C:Documents and Settings寒夜孤星del C:Chuxuezhe.txtnul 2nul本文转自 http:/ and Settings寒夜孤星说明:由于文件被修改为只读属性,删除被拒绝。使用nul,将结果输出。因为1 是 重定向输出操作符的默认句柄。所以nul 输出的仅是标准输出,不含错误输出。与上例的区别在于,本例二次重定向输出为 2nul。因为 2 是 重定向输出操作符的错误标准输出。所以 2nul 屏蔽了“拒绝访问”。C:WINDOWSsystem32命令提示符本文转自http:/ Windows XP 版本 5.1 2600版权所有 1985-2001 Mic
18、rosoft Corp.本文转自 http:/ and Settings寒夜孤星echo Hanye GuxingC:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星attrib +r C:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星del C:Chuxuezhe.txtC:Chuxuezhe.txt拒绝访问C:Documents and Settings寒夜孤星del C:Chuxuezhe.txtC:Hanye.txt 2C:Guxing.txt本文转自 http:/ and Settings寒夜孤星说明:本例对照上例
19、,将 1 句柄输出到 C:Hanye.txt。将 2 句柄输出到C:Guxing.txt。通过读取文本 Hanye.txt 和 Guxing.txt 我们明确句柄 1 和2 分别输出的是什么,上例中屏蔽的究竟是什么信息。C:WINDOWSsystem32命令提示符本文转自http:/ Windows XP 版本 5.1 2600版权所有 1985-2001 Microsoft Corp.本文转自 http:/ and Settings寒夜孤星echo Hanye GuxingC:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星del C:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星del /f /q C:Chuxuezhe.txt找不到 C:Chuxuezhe.txt本文转自 http:/ and Settings寒夜孤星del /f /q C:Chuxuezhe.txt 1nul
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。