Pocket

バッチファイルで各種設定を自動化したとき、ちゃんとエラーなく終わったかどうかを確認する方法として、ログファイルの作成方法をご紹介します。

細かい内容は置いといてログ出力の方法コマンドだけ知りたい方は目次からまとめに飛んで下さい。

スポンサーリンク

ログファイルの設定

setコマンドを使ってログファイル名を指定します。

今回は「実行しているバッチファイルのカレントフォルダ\log\PC名.log」となるように指定します。

PC名は環境変数の「%COMPUTERNAME%」を使えるので

これでログを残したい部分で「BAT_LOG」を指定すればログを作成できます。

ログ出力方法

ログファイルに出力する方法は上書きと追記の2種類があります。

追記出力

追記出力には「>>」を使います。

追記出力は既にファイルが存在する場合、一番最後の行から追記していきます。

なので上記ファイルを2回実行した場合、既に作成されているログの続きから出力されるので、ログファイルには「追記出力でログ出力します。」が2行記載された内容になります。

上書き出力

上書き出力には「>」を使います。

上書き出力の方法でログを出力した場合、それ以前にあったログの内容は破棄されて現在の出力が上書きされます。

なので上記ファイルを2回実行した場合、既に作成されているログの内容は破棄されるので、ログファイルには「上書き出力でログ出力します。」が1行記載された内容になります。

以前に実行したログに上書きする形でログを取得する場合は、この上書き出力を使用しますが、下記のように使ってしまうとログを残せなくなってしまうので注意して下さい。

この場合ログ出力を全て上書きで出力しているので、ログファイルの内容は「完了です。」の1行のみになります。

前のファイルに上書きで、今回のログを出力する場合は

最初だけ上書き出力し、2つ目からは追記出力でログ出力を行います。

これでログ一覧をログに残せるように出力できます。

エラー出力

上記の方法は標準出力をファイルへ出力する方法です。

エラーメッセージはエラー出力に出力されるので、この方法だとエラーメッセージは出力されません。

エラー出力を出力するには「2>」を使います。

こうするとエラー出力がファイルに出力されるので、ファイルの内容は「ファイルが見つかりません」となります。

しかし、これだと標準出力はファイルに出力されなくなってしまうので、どちらも出力するには「2>&1」を使います。

2>&1は「標準エラー出力(2)を標準出力に出力する(&1)」という意味です。

なのでこれで標準出力とエラー出力の両方をファイルへ出力できます。

ログが存在する場合にエラーにする方法

すでにバッチを実行済みでログがある場合、2回目を流すことなくエラーでバッチを止めたい場合はこの方法を使います。

「IF EXIST」は指定のファイルが存在する場合コマンドを実行します。

このコマンドでログがる場合は「Exit」で処理から抜けるか、「goto」でエラー処理用のラベルに飛ぶことで中断させることができます。

まとめ

以上のログ取得方法を表にまとめるとこうなります。

コマンド > ファイルパス 標準出力をファイルへ上書き出力
コマンド >> ファイルパス 標準出力をファイルへ追記出力
コマンド 2> ファイルパス 標準エラー出力をファイルへ上書き出力
コマンド 2>> ファイルパス 標準エラー出力をファイルへ追記出力
コマンド > ファイルパス 2>&1 標準出力と標準エラー出力をファイルへ上書き出力
コマンド >> ファイルパス 2>&1 標準出力と標準エラー出力をファイルへ追記出力

以上です。

Pocket

スポンサーリンク