從命令提示字元重新導向錯誤訊息:STDERR/STDOUT
本文說明如何從命令提示字元重新導向錯誤訊息。
原始產品版本: Visual C++
原始 KB 編號: 110930
摘要
使用 >
符號從應用程式重新導向輸出時,錯誤訊息仍會列印到畫面。 這是因為錯誤訊息通常會傳送至標準錯誤數據流,而不是標準輸出數據流。
來自主控台 (命令提示字元) 應用程式或命令的輸出通常會傳送至兩個不同的數據流。 一般輸出會傳送至標準輸出 (STDOUT) ,而錯誤訊息會傳送至標準錯誤 (STDERR) 。 當您使用 >
符號重新導向主控台輸出時,您只會重新導向 STDOUT。 若要重新導向 STDERR,您必須指定 2>
重新導向符號。 這會選取第二個輸出數據流,也就是 STDERR。
範例
file.xxx 不存在的命令 dir file.xxx
() 會顯示下列輸出:
磁碟驅動器 F 中的磁碟區是 Candy Cane 磁碟區序號為 34EC-0876
找不到檔案
如果您使用 dir file.xxx > nul
將輸出重新導向至 NUL 裝置,您仍然會看到錯誤訊息:
找不到檔案
若要將錯誤訊息重新導向至 NUL,請使用下列命令:
dir file.xxx 2> nul
或者,您可以將輸出重新導向至某個位置,並將錯誤重新導向至另一個位置。
dir file.xxx > output.msg 2> output.err
您可以使用 &1
命令將 STDERR 的輸出重新導向至 STDOUT,然後將輸出從 STDOUT 傳送至檔案,以將錯誤和標準輸出列印到單一檔案:
dir file.xxx 1> output.msg 2>&1
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應