コマンド プロンプトからのエラー メッセージのリダイレクト: 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