日常の業務やシステム運用では、複数のバッチファイルを連続して実行したい場面がよくあります。個別に実行していては非効率でミスも起きやすくなるため、それらを一括で管理・実行する「マスタースクリプト」を作成することが有効です。
この記事では、複数のバッチファイルを順番に実行し、ログ出力やエラーハンドリングも取り入れた実践的なマスタースクリプトの作成方法を解説します。
マスタースクリプトの基本構造
複数のバッチファイルを順番に実行するには、call
コマンドを使います。以下はその基本形です。
@echo off
echo バッチ処理を開始します...
call script1.bat
call script2.bat
call script3.bat
echo すべてのバッチファイルを実行しました。
pause
call
を使うことで、呼び出されたバッチが終了した後に、元のスクリプトに処理が戻り、次のスクリプトを順次実行できます。
特定フォルダ内のバッチファイルを一括実行する方法
ファイル数が多く、都度 call
を書くのが煩雑な場合は、指定フォルダ内の .bat
ファイルを自動的にすべて実行する方法が便利です。
@echo off
set "SCRIPT_DIR=C:\Batch\Scripts"
echo フォルダ内のバッチファイルを順に実行します...
for %%F in ("%SCRIPT_DIR%\*.bat") do (
echo 実行中: %%~nxF
call "%%F"
)
echo すべての処理が終了しました。
pause
%%~nxF
はファイル名と拡張子を表示します。ファイル名順に実行されるため、順序が重要な場合はファイル名の先頭に「01_」「02_」などの番号を付けておくとよいでしょう。
ログファイルに出力する構成
後から処理の成否を確認したい場合、ログをファイルに記録しておくと便利です。以下はログ出力を取り入れた例です。
@echo off
set "SCRIPT_DIR=C:\Batch\Scripts"
set "LOGFILE=C:\Batch\master_log.txt"
echo ==== 処理開始: %DATE% %TIME% ==== >> "%LOGFILE%"
for %%F in ("%SCRIPT_DIR%\*.bat") do (
echo [%DATE% %TIME%] 開始: %%~nxF >> "%LOGFILE%"
call "%%F" >> "%LOGFILE%" 2>&1
echo [%DATE% %TIME%] 終了: %%~nxF >> "%LOGFILE%"
)
echo ==== 処理終了: %DATE% %TIME% ==== >> "%LOGFILE%"
2>&1
を使うことで標準出力とエラー出力の両方をログに残せます。
エラー発生時に処理を停止させる
いずれかのバッチファイルでエラーが起きた場合、それ以降の処理を停止させたいこともあります。その場合は ERRORLEVEL
を使って制御します。
@echo off
set "SCRIPT_DIR=C:\Batch\Scripts"
for %%F in ("%SCRIPT_DIR%\*.bat") do (
echo 実行中: %%~nxF
call "%%F"
if errorlevel 1 (
echo エラーが発生しました。処理を中断します。
exit /b 1
)
)
echo すべての処理が正常に終了しました。
pause
各スクリプト内で exit /b 1
を適切に記述しておくことで、エラー判定が正しく機能します。
まとめ
複数のバッチファイルを一括実行・管理するには、マスタースクリプトを作成するのが効果的です。以下の要素を取り入れることで、運用の自動化と安定性が向上します。
- call による順次実行
- フォルダ内一括処理 によるメンテナンス性の向上
- ログ記録 によるトラブル時の検証
- エラーハンドリング による安全な運用
定期処理や夜間バッチなど、業務の自動化を強化する上で、マスタースクリプトの導入は非常に有効です。状況に応じて柔軟に拡張していきましょう。