コマンド プロンプトからのエラー メッセージのリダイレクト: STDERR/STDOUT

この記事では、コマンド プロンプトからのエラー メッセージのリダイレクトについて説明します。

元の製品バージョン: Visual C++
元の KB 番号: 110930

概要

シンボルを使用して > アプリケーションからの出力をリダイレクトする場合、エラー メッセージは引き続き画面に出力されます。 これは、多くの場合、エラー メッセージが Standard Out ストリームではなく Standard Error ストリームに送信されるためです。

コンソール (コマンド プロンプト) アプリケーションまたはコマンドからの出力は、多くの場合、2 つの別々のストリームに送信されます。 標準出力は Standard Out (STDOUT) に送信され、エラー メッセージは Standard Error (STDERR) に送信されます。 シンボルを使用してコンソール出力を > リダイレクトすると、STDOUT のみがリダイレクトされます。 STDERR をリダイレクトするには、リダイレクト シンボルを指定 2> する必要があります。 これにより、STDERR である 2 番目の出力ストリームが選択されます。

コマンド dir file.xxx (file.xxx が存在しない場合) には、次の出力が表示されます。

ドライブFのボリュームはキャンディケインボリュームシリアル番号は34EC-0876です
ファイルが見つかりません

を使用して dir file.xxx > nul出力を NUL デバイスにリダイレクトすると、エラー メッセージが引き続き表示されます。

ファイルが見つかりません

エラー メッセージを NUL にリダイレクトするには、次のコマンドを使用します。

dir file.xxx 2> nul

または、出力をある場所にリダイレクトし、エラーを別の場所にリダイレクトすることもできます。

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

エラーと標準出力を 1 つのファイルに出力するには、 コマンドを &1 使用して STDERR の出力を STDOUT にリダイレクトし、STDOUT からファイルに出力を送信します。

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