【保存版】Windowsコマンドプロンプトの出力をテキストファイルにリダイレクトする方法まとめ
Windowsでコマンドやバッチ処理を実行した際の動作を記録し、トラブルシューティングを行う上で最も便利な方法のひとつが、出力をファイルにリダイレクトすることです。
ただし、コマンドラインの出力をファイルに書き込む方法はいくつかあり、どれを選ぶかは、コマンドの出力をどう確認したいかによって異なります。この記事では、代表的なリダイレクトの手法を目的別にわかりやすく解説します。
Windowsコマンドプロンプトの出力の仕組み
Windowsコンソール(コマンドプロンプト)でコマンドを入力すると、その出力は2つの異なるストリームに分けて送られます。
- STDOUT(標準出力):コマンドが返す通常の応答が出力される場所です。たとえばDIRコマンドの場合、ディレクトリ内のファイル一覧が標準出力に表示されます。
- STDERR(標準エラー出力):コマンドに問題が発生した際のエラーメッセージが出力される場所です。たとえばディレクトリ内に該当ファイルがない場合、「File Not Found」というメッセージが標準エラー出力に送られます。
Windowsでは、これら両方の出力ストリームをそれぞれファイルへリダイレクトできます。
標準出力を新規ファイルにリダイレクトする
コマンドの標準出力をファイルに書き込む方法は2つあります。まず1つ目は、コマンドを実行するたびに新しいファイルへ出力を書き込む方法です。
コマンドプロンプトを開いて、次のように入力します。
dir test.exe > myoutput.txt
「>」という記号は、STDOUT(標準出力)を指定した名前のファイルに出力するようコンソールに指示します。
このコマンドを実行すると、コマンドウィンドウには「ファイルが存在しない」というエラー以外、何も表示されないことに気づくでしょう。
これは、コマンドの標準出力が「myoutput.txt」というファイルにリダイレクトされたためです。このファイルは、コマンドを実行したディレクトリと同じ場所に作成されます。一方、標準エラー出力は従来どおり画面に表示されます。
注意:コマンドを実行する前に、コマンドプロンプトの作業ディレクトリ(カレントフォルダ)を変更しておきましょう。そうすれば、出力ファイルがどこに保存されるのかを把握できます。
ファイルに出力された標準出力を確認するには、コマンドウィンドウで「myoutput.txt」と入力します。すると、既定のテキストエディタ(多くの場合はメモ帳/Notepad.exe)でテキストファイルが開きます。
なお、同じコマンドを再度実行すると、以前の出力ファイルは削除され、最新のコマンド出力だけで新しいファイルが作り直されます。
標準出力を同じファイルに追記していく
既存のファイルを上書きしたくない場合はどうすればよいのでしょうか。その場合は、「>」の代わりに「>>」を使って出力をファイルにリダイレクトします。先ほどの例なら、次のように入力します。
dir test.exe >> myoutput.txt
画面には同じ結果(エラーのみ)が表示されます。
しかし今回は、出力ファイルを上書きするのではなく、新しい出力が既存の出力ファイルに追記されます。
コマンドを実行して出力を追記するたびに、新しい標準出力が既存ファイルの末尾に追加されていきます。ログを時系列で残したい場合に非常に便利な方法です。
標準エラー出力をファイルにリダイレクトする
標準出力をファイルに書き込めるのと同じように、標準エラー出力もファイルに出力できます。
そのためには、コマンドの末尾に「2>」を付け、続けて作成したいエラー出力ファイル名を指定します。
この例では、次のコマンドを入力します。
dir test.exe > myoutput.txt 2> output.err
これにより、標準出力ストリームは「myoutput.txt」へ、標準エラー出力ストリームは「output.err」へそれぞれ送られます。その結果、コンソールウィンドウには何も表示されなくなります。
エラーメッセージを確認したいときは「output.err」と入力してください。既定のテキストエディタでファイルが開き、内容を確認できます。
ご覧のとおり、コマンドから出されたエラーメッセージはすべてエラーファイルに出力されます。標準出力と同様に、「2>>」を使えば、過去に実行したコマンドのエラーに追記していくことも可能です。
すべての出力を1つのファイルにまとめる
ここまでの方法では、標準出力用と標準エラー出力用の複数ファイルが生成されます。
両方の出力を同じファイルに含めたい場合も、それに対応する方法があります。次のコマンドを使えば、すべての出力を1つのファイルにリダイレクトできます。
dir test.exe 1> myoutput.txt 2>&1
このコマンドの仕組みは以下のとおりです。
- 標準出力は、出力番号「1」で識別される出力ファイル(myoutput.txt)に向けられます。
- 番号「2」で識別される標準エラー出力は、番号「1」で識別される出力ファイルにリダイレクトされます。
これにより、エラー出力が標準出力の末尾に追加されます。あらゆるコマンドの出力を1つのファイルでまとめて確認できる、実用的な方法です。
標準出力・標準エラー出力を非表示にする
出力をファイルではなく「NUL」にリダイレクトすることで、標準出力や標準エラー出力をオフにすることもできます。
先ほどの例で、標準出力だけが必要でエラー出力をまったく表示したくない場合は、次のコマンドを使用します。
dir test.exe 1> myoutput.txt 2>nul
この結果得られる出力ファイルは、標準出力だけをリダイレクトした最初の例と同じものですが、このコマンドではエラーがコンソール内に表示されず、エラーログファイルも作成されません。
エラーを気にする必要がなく、余計な表示を避けたい場合に役立つテクニックです。
バッチファイルでも同じテクニックが使える
上記の出力コマンドは、いずれもBATファイル(バッチファイル)の中から実行できます。その場合、該当行の出力は指定した出力ファイルに書き込まれます。バッチファイル内のコマンドが実行時にエラーを出していないかを確認するうえで、非常に有効な手段です。
-
Windows 10のコマンドラインに加えられた主な変更点まとめ
Windows 10では数多くの変更が行われましたが、その中にはあまり話題になっていないものもあります。その一つがコマンドラインに関する変更です。今回はこの点に焦点を当てて解説していきます。 Windows 10におけるコマンドラインの改善点 Microsoftはコマンドラインに対していくつかの新機能を追加しました。開発者はもちろん、さまざまな理由からコマンドラインを日常的に利用するユーザーにとっても、これらの変更は非常に好評です。 それでは、具体的な新機能を順番に見ていきましょう。 TarとCurlのサポート Linuxを本格的に使っている方なら、.TARアーカイブに馴染みがあるでしょう
-
コマンドラインからUbuntuをアップグレードする方法|do-release-upgrade徹底解説
Ubuntuの「アップデートマネージャー」を使えば、新しいメジャーリリースへのアップグレードは比較的簡単に行えます。GUIのウィザードが手順を順番に案内してくれるため、初心者でも迷わず操作できるでしょう。 しかし、GUIユーティリティを使えない場面もあります。たとえばサーバー環境ではグラフィカルインターフェースにアクセスできないため、コマンドラインでアップグレード作業を行うしかありません。 とはいえ、これだけがコマンドラインを使う理由ではありません。CLIでは処理の進行状況がより詳細に表示されるのが特徴です。多くのコマンドラインツールは実行中に大量のテキストを出力するため、アップグレードの詳細