close

現在windows的時代了,很多基本的東西windows說明裡都有,搜尋"重新導向"...

摘錄windows說明如下:

使用指令重新導向運算子您可以使用重新導向運算子,從預設位置將指令輸入和輸出資料流重新導向至不同位置。輸入或輸出資料流位置是指控制碼。

下表列出可用來重新導向指令輸入和輸出資料流的運算子。

重新導向運算子 描述
> 對檔案或裝置 (例如印表機) 而不是 [命令提示字元] 視窗寫入指令輸出。
< 從檔案讀取指令輸入,不是從鍵盤讀取輸入。
>> 附加指令輸出到檔案結尾,而不刪除檔案中已有的資訊。
>& 將一個控制碼的輸出寫至另一個控制碼的輸入。
<& 從一個控制碼讀取輸入並將它寫至另一個控制碼的輸出。
| 從一個指令讀取輸出並將它寫至另一個指令的輸入。也稱為管道。

在預設狀況下,您從鍵盤傳送指令輸入 (亦即,STDIN 控制碼) 到 Cmd.exe,然後 Cmd.exe 會將指令輸出 (亦即,STDOUT 控制碼) 傳送至 [命令提示字元] 視窗。

下表列出可用的控制碼。

控制碼 控制碼的數值同義字 描述
STDIN 0 鍵盤輸入
STDOUT 1 輸出至 [命令提示字元] 視窗
STDERR 2 輸出 [命令提示字元] 視窗時發生錯誤
UNDEFINED 3-9 應用程式分別定義這些控制碼而且每一個工具有特定的控制碼。

數字零到九 (亦即,0-9) 代表前 10 個控制碼。您可以使用 Cmd.exe 以執行程式並重新導向該程式的前 10 個控制碼。若要指定要使用哪一個控制碼,請在重新導向運算子前面鍵入控制碼號碼。若沒有定義控制碼,那麼預設 < 重新導向輸入運算子是零 (0) 和預設值 > 重新導向輸出運算子是一 (1)。鍵入 < 或 > 運算子之後,您必須指定要讀取或寫入資料的位置。您可以指定檔案名稱或另一個現存的控制碼。

若要指定重新導向現有的控制碼,請使用 (&) 字元後面加上要重新導向的控制碼 (亦即,&handle#)。例如,下列指令將控制碼 2 (亦即,STDERR) 重新導向為控制碼 1 ( 亦即,STDOUT):

1<&2

重複控制碼
& 重新導向運算子會從一個指定的控制碼將輸出或輸入複製到另一個指定的控制碼。例如,若要傳送 dir 輸出到 File.txt 以及傳送錯誤輸出到 File.txt,請鍵入:

dir>c:\file.txt 2>&1

重複一個控制碼時,則會重複此控制碼原始出現時的所有特性。例如,若一個控制碼有唯寫存取權,那麼該控制碼的全部複本皆會具有唯寫存取權。您無法將含有唯讀存取權的控制碼複製到含有唯寫存取權的控制碼。

重新導向指令輸入 (<)
若要從鍵盤將指令輸入重新導向到檔案或裝置,請使用 < 運算子。例如,從 File.txt 取得 sort 指令的指令輸入:

sort

File.txt 的內容會以字母排序的清單出現在 [命令提示字元] 視窗。

< 運算子使用唯讀存取權開啟指定的檔案名稱。因此,當您使用此運算子時會無法寫入該檔案。例如,若使用 <&2 啟動程式,讀取控制碼 0 會失敗,因為是使用唯寫存取權開啟控制碼 2。

注意事項

0 是 < 重新導向輸入運算子的預設控制碼。
重新導向指令輸出 (>)
幾乎全部指令都將輸出傳送到 [命令提示字元] 視窗。即使將輸出傳送到磁碟機或印表機的指令,也會在 [命令提示字元] 視窗顯示訊息和提示。

若要從 [命令提示字元] 視窗將指令輸出重新導向到檔案或裝置,請使用 > 運算子。您可以使用此運算子搭配大部份指令。例如,重新導向 dir 輸出到 Dirlist.txt:

dir>dirlist.txt

若 Dirlist.txt 不存在,那麼 Cmd.exe 會建立它。如果 Dirlist.txt 存在,則 Cmd.exe 會用 dir 指令的輸出以取代檔案中的資訊。

若要執行 netsh routing dump 指令,然後將指令輸出傳送到 Route.cfg,請鍵入:

netsh routing dump>c:\route.cfg

> 運算子會使用唯寫存取權以開啟指定的檔案。因此,當您使用此運算子時無法讀取該檔案。例如,若使用重新導向 >&0 啟動程式,寫入控制碼 1 會失敗,因為是使用唯讀存取權開啟控制碼 0。

注意事項

1 是 > 重新導向輸出運算子的預設控制碼。
使用 <& 運算子重新導向輸入和重複
若要使用重新導向輸入運算子 <&,那麼您指定的檔案必須已存在。若輸入檔案存在,Cmd.exe 就會以唯讀方式開啟它,然後傳送檔案所含的字元作為指令的輸入 (就好像從鍵盤輸入這些字元一樣)。若指定控制碼,Cmd.exe 就會將您指定的控制碼複製到系統中的現存控制碼。

例如,若要開啟 File.txt 作為控制碼 0 的輸入讀取 (亦即,STDIN),請鍵入:



若要開啟 File.txt,排序內容,然後將輸出傳送到 [命令提示字元] 視窗 (亦即,STDOUT),請鍵入:

sort

若要尋找 File.txt,然後將控制碼 1 (亦即,STDOUT) 和控制碼 2 ( 亦即,STDERR) 重新導向到 Search.txt,請鍵入:

findfile file.txt>search.txt 2<&1

若要重複使用者定義的控制碼 3 作為控制碼 0 的輸入讀取 (亦即,STDIN),請鍵入:

<&3

使用 >& 運算子重新導向輸出和重複
若將輸出重新導向到某檔案而且指定現有的檔案名稱,Cmd.exe 會以唯寫方式開啟檔案並覆寫檔案內容。若指定控制碼,Cmd.exe 會將檔案複製到現有的控制碼。

若要將使用者定義的控制碼 3 複製到控制碼 1,請鍵入:

>&3

若要從 ipconfig 指令將包含控制碼 2 的所有輸出 (亦即,STDERR) 重新導向到控制碼 1 (亦即,STDOUT),然後重新導向輸出到 Output.log,請鍵入:

ipconfig.exe>>output.log 2>&1

使用 >> 重新導向運算子附加輸出
若要將指令的輸出新增到檔案結尾,而不遺失檔案中存在的任何資訊,請使用二個大於符號 (亦即,>>)。例如,在下列指令中,dir 指令所產生的目錄清單會附加到 Dirlist.txt 檔案中:

dir>>dirlist.txt

若要將 netstat 指令的輸出附加到 Tcpinfo.txt 結尾,請鍵入:

netstat>>tcpinfo.txt

使用管道運算子 (|)
管道運算子 (|) 採用一個指令的輸出 (預設為 STDOUT),然後將它導向到另一個指令的輸入 (預設為 STDIN)。例如,下列指令會排序目錄:

dir | sort

在此範例中,同時啟動指令,然後暫停 sort 指令直到它接收 dir 指令的輸出。sort 指令會使用 dir 指令的輸出作為它的輸入,然後傳送它的輸出到控制碼 1 (亦即,STDOUT)。

組合指令與重新導向運算子
您可以結合篩選指令與其他指令和檔案名稱,來建立自訂指令。例如,使用下列指令,可以存放含有 LOG 字串的檔名:

dir /b | find "LOG" > loglist.txt

透過 find 篩選指令傳送 dir 指令的輸出。含有 "LOG" 字串的檔案名稱是儲存成 Loglist.txt 檔案中的檔案名稱清單 (例如:NetshConfig.log、Logdat.svd 和 Mylog.bat)。

若要在相同的指令中使用一個以上的篩選器,請以管道 (|) 區隔各個篩選器。例如,下列指令會搜尋 C 磁碟機中的各個目錄,尋找含有 "Log" 字串的檔名,並一次在一個 [命令提示字元] 視窗中顯示搜尋結果:

dir c:\ /s /b | find "LOG" | more

透過使用管道 (|),您透過 find 篩選指令,導向 Cmd.exe 以傳送 dir 指令輸出。find 指令只會選取內含字串 "Log" 字串的檔名。more 指令會顯示由 find 指令選取的檔案名稱,並且一次顯示一個 [命令提示字元] 視窗。篩選器指令的相關資訊,請參閱使用篩選器。

擷取自SKY666大大留言

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 topalan 的頭像
    topalan

    topalan

    topalan 發表在 痞客邦 留言(0) 人氣()