バッチファイル(.bat)を運用する中で、実行結果をログに残しておきたい場面は多くあります。
特に日付ごとにログファイルを分けて保存しておくと、後からトラブル解析や動作確認が非常にスムーズになります。
ここでは、日付付きログファイルを自動生成してログを保存するバッチファイルの作成方法を解説します。
日付付きログファイルを作る基本構文
バッチファイルで日付を取得してファイル名に付与するには、まず環境変数%date%を利用します。
しかし%date%はPCのロケール設定によって表示形式が異なるため、整形が必要です。
以下は、西暦-月-日の形式(例:2025-04-28)でログファイル名を作る方法です。
@echo off
rem 日付を取得して整形(例:2025-04-28)
set YYYY=%date:~0,4%
set MM=%date:~5,2%
set DD=%date:~8,2%
set TODAY=%YYYY%-%MM%-%DD%
rem ログファイル名を作成
set LOGFILE=log_%TODAY%.txt
rem 処理を実行してログに出力
echo バッチ処理を開始します。 >> %LOGFILE%
echo %TIME% 処理1を実行中... >> %LOGFILE%
echo %TIME% 処理1完了 >> %LOGFILE%
rem バッチ終了メッセージ
echo バッチ処理が完了しました。 >> %LOGFILE%
- %date%から必要な部分だけ切り出してYYYY-MM-DD形式にしています。
- >>(リダイレクト)を使って、既存のログファイルに追記しています。
- %TIME%を併用すると、時刻付きログにもできます。
ログファイルをフォルダにまとめて保存する例
ログファイルが増えてくると管理が煩雑になります。
ログ専用のフォルダを作り、そこにまとめて保存する方法も紹介します。
@echo off
rem ログ保存用フォルダ
set LOGDIR=logs
rem フォルダが存在しない場合は作成
if not exist %LOGDIR% (
mkdir %LOGDIR%
)
rem 日付取得
set YYYY=%date:~0,4%
set MM=%date:~5,2%
set DD=%date:~8,2%
set TODAY=%YYYY%-%MM%-%DD%
rem ログファイルパスを指定
set LOGFILE=%LOGDIR%\log_%TODAY%.txt
rem ログ出力
echo %TIME% バッチ処理スタート >> %LOGFILE%
rem (ここに実行する処理を記述)
echo %TIME% バッチ処理終了 >> %LOGFILE%
ログ出力をさらに自動化するヒント
エラー出力をログに分ける
通常出力(標準出力)とエラー出力(標準エラー出力)を分けたい場合は、
your_command >> %LOGFILE% 2>> error_%TODAY%.txt
のように記述できます。
ファイル名に時刻まで含める
日付だけでなく、時刻も付与してファイルを細かく管理する場合、
set NOW=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
set LOGFILE=log_%TODAY%_%NOW%.txt
などとして、ファイル名にhhmmss(時分秒)を追加できます。
まとめ
ッチファイルでログを日付付きで管理することで、「いつ」「どんな処理」が実行されたのかを正確に記録でき、トラブル対応や履歴管理が圧倒的に楽になります。
日々のバッチ運用を安定させるためにも、ぜひログ保存の自動化を取り入れてみてください!