2010年6月11日金曜日

表示結果をファイルに出力する方法 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。画面表示と印刷関連
Windowsコマンド。プログラム実行関連
コマンドプロンプト画面でコマンドを実行する
○Windows XP
作業を自動実行する時に、表示結果をファイルに保存したくなる事があります。
このような時は、コマンドの後ろに出力先を指定する方法が簡単です。


**** コマンドプロンプト画面表示の仕組みについて
o プログラムからコマンドプロンプト画面に書き込む方法は、2通りあります。
    + 標準出力 (= 普段使うのはこちら)
    + 標準エラー出力 (= 主にエラーメッセージ)
o ですので、画面表示結果をファイルに保存する時は、ファイルに保存したいものを選びます。


**** 手順
例えば、go.batという名前のバッチファイルを作って、実行するとします。

** コマンドの出力内容のうち、標準出力だけをファイルに記録する方法
o 一番良くお世話になる書き方です。
    + データを加工している時、エラーメッセージまで入れたくないですから。
----------------
call go.bat > log.txt
----------------
o 標準出力(= 主に普通の表示内容です)を、ファイルに保存します。
o 標準エラー出力(= 主にエラーメッセージです)は、画面に表示します。

** コマンドの出力内容のうち、標準エラー出力だけをファイルに記録する方法
o エラーメッセージだけ集めたい時の書き方です(例外あり)。
----------------
call go.bat 2> log.txt
----------------
o 標準出力(= 主に普通の表示内容です)は、画面に表示します。
o 標準出力は 1番。 標準エラー出力は 2番です。左の番号を省略すると、1番を指定した事になります。

** コマンドの出力内容を、全部ファイルに出力する方法
o 画面には表示しません。
----------------
call go.bat > log.txt 2>&1
----------------
o 2>&1を、最後に指定するのがポイントです。

** コマンドの出力内容を、ファイルと画面の両方に出力する方法
----------------
call go.bat > log.txt 2>&1
type log.txt
----------------
o 画面に表示されるのは、コマンドが終わってからです。


**** メモ
o ファイルに出力する時は、コマンドが途中で質問する事が無いように、コマンドを書きます。
o もしくは、質問されそうな所は、ファイルに出力しないようにします。

o プログラムの中には、作法を無視するものもあります。その場合は、適切に対応します。
    + 標準出力にエラーメッセージを書き込むプログラム
    + 標準エラー出力にデータを書き込むプログラム
    + どこか別の場所にエラーメッセージを書き込むプログラム


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。画面表示と印刷関連▼ABC順
    ▼Windowsコマンド。プログラム実行関連▼ABC順
    ▼コマンドを実行する
    ▼コマンドプロンプト画面
    ▼制作メモ
    > ECHOコマンドで空行を出力する
    バッチファイルに書いたコマンド内容を実行画面に表示させない
    > 実行中のプログラムを止める
    バッチファイルの処理を途中で終わらせる書き方。EXIT と GOTO :EOF
    +
    バッチファイルを作る
(2011年5月11日訂正。用語を標準エラー出力へ)
(2011年1月26日追加。出力の種類)