【bat】複数のバッチファイルを一括で管理・実行するマスタースクリプトの作成法

【bat】複数のバッチファイルを一括で管理・実行するマスタースクリプトの作成法 bat

日常の業務やシステム運用では、複数のバッチファイルを連続して実行したい場面がよくあります。個別に実行していては非効率でミスも起きやすくなるため、それらを一括で管理・実行する「マスタースクリプト」を作成することが有効です。

この記事では、複数のバッチファイルを順番に実行し、ログ出力やエラーハンドリングも取り入れた実践的なマスタースクリプトの作成方法を解説します。

マスタースクリプトの基本構造

複数のバッチファイルを順番に実行するには、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 による順次実行
  • フォルダ内一括処理 によるメンテナンス性の向上
  • ログ記録 によるトラブル時の検証
  • エラーハンドリング による安全な運用

定期処理や夜間バッチなど、業務の自動化を強化する上で、マスタースクリプトの導入は非常に有効です。状況に応じて柔軟に拡張していきましょう。