バッチファイルやコマンドプロンプトには、コマンドの出力結果をファイルに保存する「リダイレクト」という機能があります。
本記事では、コマンドの出力結果をファイルに保存する「リダイレクト」について紹介します。
コマンドの出力とは
コマンドが表示するコンソール画面に表示される情報のことを本記事では「コマンドの出力」と呼びます。
たとえば、dir コマンドは、カレントディレクトリの情報を一覧表示するコマンドです。バッチファイルで以下のように実行すると、画面上にカレントディレクトリの情報を「コマンドの出力」として表示します。
@echo off
dir
pause
なお、コマンドの出力には、実際は、標準出力だけでなくエラー出力もありますが、今回は説明の単純化のため標準出力のみを扱います。
リダイレクトとは
コマンドの出力をコンソールウィンドウではなく、別の場所(例えばファイル)に送るための機能のことを「リダイレクト」といいます。
コマンドの出力を扱うリダイレクトには、以下の2種類が存在します。
- >:コマンドの出力をファイルに保存します。既存の内容がある場合は上書きします
- >>:コマンドの出力をファイルに追加します。
サンプルコード1:コマンドの出力をファイルに保存(> を使用)
この例では、上記のdirコマンドの出力をファイルにリダイレクトする例を見てみます。
@echo off
dir > output.txt
echo dirコマンドの内容をファイルに保存しました。
pause
実行結果
dirコマンドの内容をファイルに保存しました。
続行するには何かキーを押してください . . .
上記実行結果を見ると、dirコマンドの内容は画面に表示されなくなりました。エクスプローラでバッチファイルのフォルダ(ディレクトリ)の内容を確認すると、output.txt が生成されているのが分かると思います。
output.txt を開いてみましょう。
上記のように、dirコマンドの出力がファイルにリダイレクトされたことが確認できました。
サンプルコード2:コマンド出力をファイルに追記(>> を使用)
この例では、リダイレクトによりコマンドの出力を既存ファイルに追記する例を紹介します。既存ファイルにリダイレクトで情報を追記する場合、>> を使用します。
以下の例は、echoコマンドの出力をファイルにリダイレクトする例です。1つめのechoでは、output.txt に Hello と書き込みます。その後、2つめのechoで Batch File と追記します。> はファイルがある場合は上書き、>> は追記であることに注意してください。
@echo off
echo Hello > output.txt
echo Batch File >> output.txt
echo echoコマンドの内容をファイルに保存しました。
pause
実行結果
echoコマンドの内容をファイルに保存しました。
続行するには何かキーを押してください . . .
output.txt を開いてみましょう。
上記のように、Hello と Batch File がテキストファイルに書き込まれました。テキストファイルには、リダイレクト記号 > や >> の直前にある空白や、行末には改行が出力されています。これはechoコマンド側の振る舞い(※)です。
※リダイレクトは単純にコマンドの出力をファイルに書き込むだけなので、コマンド側が改行文字を出力しない場合、リダイレクト先のテキストファイルにも改行文字は出力されません。
まとめ
本記事では、コマンドの出力結果をファイルに保存するリダイレクトについて紹介しました。バッチファイルの処理結果をファイルに残す場合などにご活用ください。