從命令提示字元重新導向錯誤訊息: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