可以使用重定向操作符將命令輸入和輸出數(shù)據(jù)流從默認(rèn)位置重定向到不同的位置。輸入或輸出數(shù)據(jù)流的位置即為href="HELP=glossary.hlp TOPIC=handle">句柄。
下表將列出可用的句柄。
句柄 | 句柄的數(shù)字代號(hào) | 描述 |
---|---|---|
STDIN | 0 | 鍵盤(pán)輸入 |
STDOUT | 1 | 輸出到命令提示符窗口 |
STDERR | 2 | 錯(cuò)誤輸出到命令提示符窗口 |
UNDEFINED | 3-9 | 這些句柄由應(yīng)用程序單獨(dú)定義,并且是各個(gè)工具特定的。 |
數(shù)字 0 到 9 代表前 10 個(gè)句柄??梢允褂妹?Cmd.exe 運(yùn)行程序并將該程序前 10 個(gè)句柄中的任何一個(gè)重定向。要指定想使用的句柄,可在重定向操作符前面鍵入該句柄的數(shù)字。如果未定義句柄,則默認(rèn)的 < 重定向輸入操作符是 0,而默認(rèn)的 > 重定向輸出操作符是 1。鍵入 > 或 < 操作符之后,必須指定要讀取或?qū)懭霐?shù)據(jù)的位置??梢灾付ㄎ募蛄硪粋€(gè)現(xiàn)有的句柄。
要指定重定向到現(xiàn)有句柄,請(qǐng)使用與 (&) 字符,后面接要重定向的句柄號(hào)(例如 &句柄#)。例如,下面的命令可以將句柄 2(即 STDERR)重定向到句柄 1(即 STDOUT):
2>&1
下表列出了可用于將輸入和輸出數(shù)據(jù)流進(jìn)行重定向的操作符。
重定向操作符 | 描述 |
---|---|
> | 將命令輸出寫(xiě)入到文件或設(shè)備(例如打印機(jī))中,而不是寫(xiě)在命令提示符窗口或句柄中。 |
< | 從文件中而不是從鍵盤(pán)或句柄中讀入命令輸入。 |
>> | 將命令輸出添加到文件末尾而不刪除文件中的信息。 |
>& | 將一個(gè)句柄的輸出寫(xiě)入到另一個(gè)句柄的輸入中。 |
<& | 從一個(gè)句柄讀取輸入并將其寫(xiě)入到另一個(gè)句柄輸出中。 |
| | 從一個(gè)命令中讀取輸出并將其寫(xiě)入另一個(gè)命令的輸入中。也稱(chēng)作管道。 |
默認(rèn)情況下,可以從鍵盤(pán)將命令輸入(即 STDIN 句柄)發(fā)送到 Cmd.exe,然后由 Cmd.exe 將命令輸出(即 STDOUT 句柄)發(fā)送到命令提示符窗口。
要將鍵盤(pán)輸入重定向到文件或設(shè)備,請(qǐng)使用 < 操作符。例如,要從 File.txt 獲取 sort 命令的輸入,請(qǐng)鍵入:
sort<file.txt
File.txt 的內(nèi)容將以字母順序列表的方式顯示在命令提示符窗口中。
< 操作符可以打開(kāi)具有只讀訪問(wèn)的指定文件名。所以,不能使用該操作符向文件中寫(xiě)入信息。例如,如果以 <&2 啟動(dòng)程序,則所有試圖讀取句柄 0 的操作都將失敗,因?yàn)榫浔?2 最初是以只寫(xiě)訪問(wèn)打開(kāi)的。
src="ms-its:c:\windows\help\UAshared.chm::/note.gif"> 注意
幾乎所有的命令都將輸出發(fā)送到命令提示符窗口。即使將輸出發(fā)送到驅(qū)動(dòng)器或打印機(jī)的命令也會(huì)在命令提示符窗口顯示消息和提示。
要將輸出從命令提示符窗口重定向到文件或設(shè)備,請(qǐng)使用 > 操作符??梢栽谠S多命令中使用該操作符。例如,要將 dir 輸出重定向到 Dirlist.txt,請(qǐng)鍵入:
dir>dirlist.txt
如果 Dirlist.txt 不存在,Cmd.exe 將創(chuàng)建該文件。如果 Dirlist.txt 存在,Cmd.exe 將使用 dir 命令的輸出替換文件中的信息。
要運(yùn)行 netsh routing dump 命令,然后將輸出發(fā)送到 Route.cfg,請(qǐng)鍵入:
netsh routing dump>c:\route.cfg
> 操作符可以打開(kāi)具有
src="ms-its:c:\windows\help\UAshared.chm::/note.gif"> 注意
重定向操作符 & 可以將輸出或輸入從一個(gè)指定句柄復(fù)制到另一個(gè)指定的句柄。例如,要將 dir 輸出發(fā)送到 File.txt 并將錯(cuò)誤輸出發(fā)送到 File.txt,請(qǐng)鍵入:
dir>c:\file.txt 2>&1
復(fù)制句柄時(shí),可以復(fù)制該句柄原狀態(tài)的所有特性。例如,如果一個(gè)句柄具有
要將重定向輸入操作符 (<) 與復(fù)制操作符 (&) 一起使用,指定的文件必須已經(jīng)存在。如果輸入文件存在,Cmd.exe 將以
例如,要以句柄 0 輸入讀?。?STDIN)的方式打開(kāi) File.txt,請(qǐng)鍵入:
<file.txt
要打開(kāi) File.txt,并在內(nèi)容排序后將輸出發(fā)送到命令提示符窗口(即 STDOUT),請(qǐng)鍵入:
sort<file.txt
要查找 File.txt,然后將句柄 1(即 STDOUT)和句柄 2(即 STDERR)重定向到 Search.txt,請(qǐng)鍵入:
findfile file.txt>search.txt 2<&1
要以句柄 0 輸入讀?。?STDIN)的方式復(fù)制用戶(hù)定義句柄 3,請(qǐng)鍵入:
<&3
如果將輸出重定向到文件且指定了現(xiàn)有的文件名,Cmd.exe 將以
要將用戶(hù)定義句柄 3 復(fù)制到句柄 1,請(qǐng)鍵入:
>&3
要將包括句柄 2(即 STDERR)的所有輸出從 ipconfig 命令重定向到句柄 1(即 STDOUT),然后將輸出重定向到 Output.log,請(qǐng)鍵入:
ipconfig.exe>>output.log 2>&1
要從命令中將輸出添加到文件末尾而不丟失文件中已存在的任何信息,請(qǐng)使用兩個(gè)連續(xù)的大于號(hào)(即 >>)。例如,下面的命令可以將由 dir 命令生成的目錄列表追加到 Dirlist.txt 文件:
dir>>dirlist.txt
要將 netstat 命令的輸出追加到 Tcpinfo.txt 的末尾,請(qǐng)鍵入:
netstat>>tcpinfo.txt
管道操作符 (|) 可以提取一個(gè)命令的輸出(默認(rèn)情況下是 STDOUT),然后將其導(dǎo)入另一個(gè)命令的輸入中(默認(rèn)情況下是 STDIN)。例如,下面的命令將對(duì)目錄分類(lèi):
dir | sort
在本例中,將同時(shí)啟動(dòng)兩個(gè)命令,但隨后 sort 命令會(huì)暫停,直到它接收到 dir 命令的輸出為止。sort 命令使用 dir 命令的輸出作為輸入,然后將輸出發(fā)送到句柄 1(即 STDOUT)。
可以通過(guò)合并帶有其他命令和文件名的篩選器命令創(chuàng)建自定義命令。例如,可以使用以下命令存儲(chǔ)包含“LOG”字符串的文件名:
dir 命令的輸出通過(guò) find 篩選器命令發(fā)送。包含字符串 "LOG" 的文件名作為文件名列表(例如,NetshConfig.log、Logdat.svd 和 Mylog.bat)存儲(chǔ)在文件 Loglist.txt 中。
要在相同命令中使用多個(gè)篩選器,請(qǐng)使用管道 (|) 分隔篩選器。例如,下面的命令將搜索 C 盤(pán)上的每個(gè)目錄以查找包含 "LOG" 字符串的文件名,并且在命令提示符窗口中每次顯示一屏:
利用管道 (|) 可以將 Cmd.exe 導(dǎo)向?yàn)橥ㄟ^(guò) find 篩選器命令發(fā)送 dir 命令輸出。find 命令只選擇包含字符串 "LOG" 的文件名。more 命令可以顯示由 find 命令選擇的文件名(在命令提示符窗口中每次顯示一屏)。有關(guān)篩選器命令的詳細(xì)信息,請(qǐng)參閱href="MS-ITS:ntcmds.chm::/filters.htm">使用篩選器。
相關(guān)文章