【bat】バッチファイルで実行ログを出力する方法

バッチファイルの実行ログを出力する方法について紹介します。バッチファイルはWindows環境でよく使われるスクリプト形式ですが、実行中のログをファイルに出力することで、トラブルシューティングや実行内容の記録が容易になります。以下では、標準出力および標準エラー出力をログファイルにリダイレクトする方法を具体的に説明します。

基本的なログ出力

バッチファイル内の各コマンドの後にリダイレクト演算子(> や >>)を使用してログファイルに出力する方法です。

@echo off
REM 標準出力をログファイルにリダイレクト
echo Starting script > log.txt

REM 任意のコマンドの標準出力をログファイルに追加
echo Running some command >> log.txt
some_command >> log.txt 2>&1

REM 別の任意のコマンドの標準出力をログファイルに追加
echo Running another command >> log.txt
another_command >> log.txt 2>&1

echo Script completed >> log.txt

全コマンドのログを出力

バッチファイル全体の出力をログファイルにリダイレクトする方法です。

@echo off
REM 全ての出力をログファイルにリダイレクト
(
    echo Starting script
    echo Running some command
    some_command
    echo Running another command
    another_command
    echo Script completed
) > log.txt 2>&1

実行ログを表示しながら保存

バッチファイルの実行ログをコンソールに表示しつつ、ファイルにも保存する方法です。Windowsでは標準で tee コマンドが利用できないため、PowerShellを使用します。

@echo off
REM PowerShellを使ってログを出力
powershell -Command "Start-Transcript -Path 'log.txt' -Append; & { .\script.bat }; Stop-Transcript"

ここで、script.bat は実際のコマンドが含まれるバッチファイルの名前です。この方法では、バッチファイルの実行内容がすべて log.txt に保存されます。

まとめ

バッチファイルの実行ログを出力する方法について紹介しました。基本的なリダイレクト方法から全コマンドの出力リダイレクト、さらに実行ログを表示しながら保存する方法まで、多様なニーズに応じたログ出力が可能です。これらの方法を使って、バッチファイルの実行内容を記録し、トラブルシューティングや実行結果の確認を行ってください。