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 本日は土日です。処理をスキップします。
)
タスクスケジューラと併用する方法
特定の曜日にだけバッチファイルを実行したい場合は、タスクスケジューラを使うことでより確実に運用できます。
- タスクスケジューラを起動
- [基本タスクの作成] をクリック
- 「トリガー」で「週単位」を選択し、実行したい曜日にチェック
- 「操作」でこのバッチファイルを指定
これにより、バッチ内での曜日判定が不要になり、よりシンプルに運用できます。
まとめ
バッチファイルで曜日を判定するには wmic
を活用するのが簡単で確実です。曜日に応じて処理を分岐させれば、定期バックアップやレポート生成などの自動化に活用できます。曜日判定とあわせて、タスクスケジューラとの併用でさらに実用的な運用が可能になります。