【bat】バッチファイルで特定の曜日にだけ処理を実行する方法|曜日判定とスケジュール制御

【bat】バッチファイルで特定の曜日にだけ処理を実行する方法|曜日判定とスケジュール制御 bat

Windowsのバッチファイルを使って、「月曜日だけ処理を実行したい」「平日のみ実行したい」といった要件に対応するには、曜日を判定する仕組みが必要です。この記事では、バッチファイルで曜日を取得し、特定の曜日にだけ処理を実行する方法を解説します。

バッチファイルで現在の曜日を取得する方法

Windows環境では、wmicコマンドを使うことで曜日を数値(0~6)で取得できます。曜日と数値の対応は以下の通りです。

曜日 数値
日曜日 0
月曜日 1
火曜日 2
水曜日 3
木曜日 4
金曜日 5
土曜日 6

実際のコードは以下のようになります。

@echo off
for /f %%a in ('wmic path win32_localtime get dayofweek /value ^| find "="') do set %%a

このスクリプトを実行すると、dayofweekという変数に曜日の数値が代入されます。

特定の曜日だけ処理を実行する例(月曜日のみ)

以下のスクリプトは、月曜日(1)の場合にだけ任意の処理を実行します。

@echo off
for /f %%a in ('wmic path win32_localtime get dayofweek /value ^| find "="') do set %%a

if "%dayofweek%"=="1" (
  echo 本日は月曜日です。処理を実行します。
  rem ここに実行したい処理を記述
) else (
  echo 本日は月曜日ではありません。処理をスキップします。
)

平日のみ処理を実行する例(月〜金)

月曜日(1)〜金曜日(5)の範囲で処理を行いたい場合は、数値の範囲判定を行います。

@echo off
for /f %%a in ('wmic path win32_localtime get dayofweek /value ^| find "="') do set %%a

if %dayofweek% GEQ 1 if %dayofweek% LEQ 5 (
  echo 本日は平日です。処理を実行します。
  rem ここに実行したい処理を記述
) else (
  echo 本日は土日です。処理をスキップします。
)

タスクスケジューラと併用する方法

特定の曜日にだけバッチファイルを実行したい場合は、タスクスケジューラを使うことでより確実に運用できます。

  1. タスクスケジューラを起動
  2. [基本タスクの作成] をクリック
  3. 「トリガー」で「週単位」を選択し、実行したい曜日にチェック
  4. 「操作」でこのバッチファイルを指定

これにより、バッチ内での曜日判定が不要になり、よりシンプルに運用できます。

まとめ

バッチファイルで曜日を判定するには wmic を活用するのが簡単で確実です。曜日に応じて処理を分岐させれば、定期バックアップやレポート生成などの自動化に活用できます。曜日判定とあわせて、タスクスケジューラとの併用でさらに実用的な運用が可能になります。