バッチを呼び出し、処理結果をログに出力する


はじめに

既存のバッチファイルを起動し、その実行結果から色々調査する業務がありました。しかし、ログの出力どころかpauseコマンドすら入っておらず、実行後に人知れずコマンドプロンプトが消えてしまう状態でした…
既存バッチには手を加えたくなかったので、既存バッチを呼び出して実行結果をログに出力する新しいバッチを作ろうとしました。その時に少しはまったので忘れないように投稿します。

ログファイル名と保存先の設定

SETを使ってログファイル名と保存先を指定します。

SET LOG=%dp0\hoge.log

今回は保存先をバッチファイルと同じディレクトリ(カレントディレクトリ)に、ファイル名をhoge.logとしました。カレントディレクトリの指定方法はググると色々出てくるので、そちらを参照してください。

バッチの呼出しに使うのは call? start?

バッチを呼出すにはcallコマンドかstartコマンドが使えるみたいです。まずはcallコマンドを使ってみました。呼出し用バッチはこんな感じです。

@ECHO OFF

SET LOG=%~dp0log\hoge.log
CALL HOGE.bat >> %LOG%

PAUSE
EXIT

hoge.batが実行結果を確認したい既存バッチファイルです。早速実行してみると…

呼出した既存バッチの処理は表示されないんですね。次にstartコマンドを試すと別画面で既存バッチが起動されるため、処理内容は確認できるようになりました。しかし、ログ出力ができていませんでした。(別プロセスで起動されるのでログ出力できなかった?)

結果

とりあえず、今回はcallコマンドで行くことにしました。できれば呼出したバッチの処理内容を表示しておきたいので、何かいい方法ないかな~。