共用方式為


從命令提示字元重新導向錯誤訊息:STDERR/STDOUT

本文說明從命令提示字元重新導向錯誤訊息。

原始產品版本: Visual C++
原始 KB 編號: 110930

摘要

使用 > 符號將應用程式的輸出重新導向時,錯誤訊息仍會列印到畫面。 這是因為錯誤訊息通常會傳送至標準錯誤數據流,而不是標準輸出數據流。

主控台的輸出(命令提示字元)應用程式或命令通常會傳送至兩個不同的數據流。 一般輸出會傳送至標準輸出 (STDOUT),並將錯誤訊息傳送至標準錯誤 (STDERR)。 當您使用 > 符號重新導向主控台輸出時,您只會重新導向 STDOUT。 若要重新導向 STDERR,您必須指定 2> 重新導向符號。 這會選取 STDERR 的第二個輸出數據流。

範例

命令 dir file.xxx (其中 file.xxx 不存在)會顯示下列輸出:

磁碟驅動器 F 中的磁碟區是 Candy Cane Cane 磁碟區序號為 34EC-0876
找不到檔案

如果您使用 將輸出重新導向至 NUL 裝置 dir file.xxx > nul,您仍然會看到錯誤訊息:

找不到檔案

若要將錯誤訊息重新導向至 NUL,請使用下列命令:

dir file.xxx 2> nul

或者,您可以將輸出重新導向至某個位置,並將錯誤重新導向至另一個位置。

dir file.xxx > output.msg 2> output.err

您可以使用 命令將 STDERR 的輸出重新導向至 STDOUT,然後將 STDOUT 的輸出傳送至檔案,將錯誤和標準輸出列印至單一檔案 &1

dir file.xxx 1> output.msg 2>&1