[ホーム] - [バッチファイル サンプル一覧] - [stdoutとstderrの違いをサンプルで確実に理解する]

stdoutとstderrの違いをサンプルで確実に理解する | Windows バッチファイル



目的


Windows コマンドプロンプトやバッチファイル環境における""と""の違いに関して説明します。
stdoutは標準の出力、stderrはエラーの出力先です。

・コマンドの結果はstdoutに出力する
・コマンドでエラーが出たらstderrに出力する

ということです。ただしどちらに出力するかはコマンドの設計者が決めることであり、自動的にOSが振り分けているのではありません。


例えば以下の実行結果を考えます。
(nonexist.txtは実際に存在しないファイルです)


標準出力、エラー出力ともコンソールに出力




C:\temp>dir nonexist.txt
ドライブ C のボリューム ラベルは cdrive です
ボリューム シリアル番号は xxxx-yyyy です

C:\temp のディレクトリ

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




標準出力のみファイルに出力




C:\temp>dir nonexist.txt >stdout.txt
ファイルが見つかりません

C:\temp>type stdout.txt
ドライブ C のボリューム ラベルは cdrive です
ボリューム シリアル番号は xxxx-yyyy です

C:\temp のディレクトリ




エラー出力のみファイルに出力




C:\temp>dir nonexist.txt 2>stderr.txt
ドライブ C のボリューム ラベルは cdrive です
ボリューム シリアル番号は xxxx-yyyy です

C:\temp のディレクトリ

C:\temp>type stderr.txt
ファイルが見つかりません




このように同じ出力でも正常・エラーで出力先が分かれる仕組みになっています。
元々これらはUNIXの仕組みであり、MS-DOSで同じ機能を組み込んだことになります。

参考:
【C言語】標準出力、標準エラー出力のテスト用プログラム
標準出力、標準エラー出力のリダイレクト方法






本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。)

[ホーム] - [バッチファイル サンプル一覧]