可以使用重定向操作符將命令輸入和輸出資料流從預設位置重定向到不同的位置。輸入或輸出資料流的位置即為控制代碼。
下表將列出可用的控制代碼。
控制代碼 控制代碼的數字代號 描述
stdin 0 鍵盤輸入
stdout 1 輸出到命令提示符視窗
stderr 2 錯誤輸出到命令提示符視窗
undefined 3-9 這些控制代碼由應用程式單獨定義,並且是各個工具特定的。
數字 0 到 9 代表前 10 個控制代碼。
可以使用命令 cmd.exe 執行程式並將該程式前 10 個控制代碼中的任何乙個重定向。要指定想使用的控制代碼,可在重定向操作符前面鍵入該控制代碼的數字。如果未定義控制代碼,則預設的 < 重定向輸入操作符是 0,而預設的 > 重定向輸出操作符是 1。鍵入 > 或 < 操作符之後,必須指定要讀取或寫入資料的位置。可以指定檔名或另乙個現有的控制代碼。
要指定重定向到現有控制代碼,請使用與 (&) 字元,後面接要重定向的控制代碼號(例如 &控制代碼#)。例如,下面的命令可以將控制代碼 2(即 stderr)重定向到控制代碼 1(即 stdout):
2>&1
下表列出了可用於將輸入和輸出資料流進行重定向的操作符。
重定向操作符 描述
> 將命令輸出寫入到檔案或裝置(例如印表機)中,而不是寫在命令提示符視窗或控制代碼中。
< 從檔案中而不是從鍵盤或控制代碼中讀入命令輸入。
>> 將命令輸出新增到檔案末尾而不刪除檔案中的資訊。
>& 將乙個控制代碼的輸出寫入到另乙個控制代碼的輸入中。
<& 從乙個控制代碼讀取輸入並將其寫入到另乙個控制代碼輸出中。
| 從乙個命令中讀取輸出並將其寫入另乙個命令的輸入中。也稱作管道。
預設情況下,可以從鍵盤將命令輸入(即 stdin 控制代碼)傳送到 cmd.exe,然後由 cmd.exe 將命令輸出(即 stdout 控制代碼)傳送到命令提示符視窗。
重定向輸入 (<)
要將鍵盤輸入重定向到檔案或裝置,請使用 < 操作符。例如,要從 file.txt 獲取 sort 命令的輸入,請鍵入:
sort)
幾乎所有的命令都將輸出傳送到命令提示符視窗。即使將輸出傳送到驅動器或印表機的命令也會在命令提示符視窗顯示訊息和提示。
要將輸出從命令提示符視窗重定向到檔案或裝置,請使用 > 操作符。可以在許多命令中使用該操作符。例如,要將 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 是 > 重定向輸出操作符的預設控制代碼。
複製控制代碼
重定向操作符 & 可以將輸出或輸入從乙個指定控制代碼複製到另乙個指定的控制代碼。例如,要將 dir 輸出傳送到 file.txt 並將錯誤輸出傳送到 file.txt,請鍵入:
dir>c:\file.txt 2>&1
複製控制代碼時,可以複製該控制代碼原狀態的所有特性。例如,如果乙個控制代碼具有只寫訪問的屬性,則該控制代碼的所有副本都具有只寫訪問屬性。不能將乙個具有唯讀訪問屬性的控制代碼複製到另乙個具有只寫訪問屬性的控制代碼。
使用 & 操作符重定向輸入和副本
要 將重定向輸入操作符 (<) 與複製操作符 (&) 一起使用,指定的檔案必須已經存在。如果輸入檔案存在,cmd.exe 將以唯讀方式開啟該檔案,然後將檔案中包含的字元作為輸入傳送到此命令(如同從鍵盤輸入一樣)。如果指定了控制代碼,cmd.exe 將指定的控制代碼複製到系統現有的控制代碼中。
例如,要以控制代碼 0 輸入讀取(即 stdin)的方式開啟 file.txt,請鍵入:
search.txt 2<&1
要以控制代碼 0 輸入讀取(即 stdin)的方式複製使用者定義控制代碼 3,請鍵入:
<&3
使用 & 操作符重定向輸出和複製
如果將輸出重定向到檔案且指定了現有的檔名,cmd.exe 將以只寫方式開啟檔案並覆蓋該檔案內容。如果指定了控制代碼,cmd.exe 將檔案複製到現有控制代碼中。
要將使用者定義控制代碼 3 複製到控制代碼 1,請鍵入:
>&3
要將包括控制代碼 2(即 stderr)的所有輸出從 ipconfig 命令重定向到控制代碼 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
dir 命令的輸出通過 find 篩選器命令傳送。包含字串 "log" 的檔名作為檔名列表(例如,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 命令選擇的檔名(在命令提示符視窗中每次顯示一屏)。有關篩選器命令的詳細資訊,請參閱使用篩選器。
輸入重定向,正確輸出重定向,錯誤輸出重定向
一 標準輸入 stdin a.輸入重定向 標準輸入 作用 將原先鍵盤輸入的內容改由檔案內容代替 root wenwen cat test.txt asdas asdas asdas 按crtl d 退出 將network內容匯入到test.txt中去 root wenwen cat test.txt...
重定向 C語言實現重定向
本題是c primer plus 5版 第8章程式設計題第一道題,題目如下 從題述來看,有如下幾個關鍵點 有這麼乙個文字檔案 讀入檔案中的文字 統計檔案中字元數 判斷檔案的結尾 以上4點都做到了,此題解完。那麼,這4步的每一步該如何解決呢?1.有這麼乙個文字檔案 這個好解決,事先建立好乙個文字檔案,...
Linux重定向(輸入輸出重定向)
我們知道,linux 中標準的輸入裝置預設指的是鍵盤,標準的輸出裝置預設指的是顯示器。而本節所要介紹的輸入 輸出重定向,完全可以從字面意思去理解,也就是 通常是用檔案或命令的執行結果來代替鍵盤作為新的輸入裝置,而新的輸出裝置通常指的就是檔案。對於輸入重定向來說,其需要用到的符號以及作用如表 1 所示...