Windows バッチ(.bat)で曜日判定を行う

2020年10月22日木曜日

bat windows

t f B! P L

タイトル

はじめに

Windows バッチ(.bat)で曜日の判定を行い、曜日別に処理を行う事案があった為、その覚書です。

まず、Windows 標準コマンドには、曜日の取得を行うコマンドがありません。
そのため、VBScriptと組み合わせて曜日の取得を行っていきます。

作成するファイル

ファイル 内容
weekday.vbs 曜日を取得する VBScript
main.bat メインの Windowsバッチ

スポンサーリンク

コードの内容

weekday.vbs

まずは、曜日を取得する為の weekday.vbs です。

WScript.Quit(WeekDay(Date))

[解説]
現在の日付から曜日を 1(日曜) ~ 7(土曜)の整数値で取得し、バッチの戻り値としています。

main.bat

次はメインの Windows バッチです。

cscript /b .\weekday.vbs  
if %errorlevel%==7 set WDAY=SAT  
if %errorlevel%==6 set WDAY=FRI  
if %errorlevel%==5 set WDAY=THU  
if %errorlevel%==4 set WDAY=WED  
if %errorlevel%==3 set WDAY=TUE  
if %errorlevel%==2 set WDAY=MON  
if %errorlevel%==1 set WDAY=SUN

# あとは、WDAY 環境変数の中身を見て、曜日毎の処理を行う

[解説]
先ほど作成した weekday.vbs を最初に実行し、曜日を取得します。
実行後、%errorlevel% に1(日曜) ~ 7(土曜)の曜日が入ります。
%errorlevel%は別の処理を実行してしまうと、内容が書き換わってしまう為、一旦別の変数(WDAY)に曜日を格納します。
あとは、変数(WDAY)の内容に従い、曜日毎の処理を行なっていきます。

最後に

自分は、曜日毎に7世代分のバックアップを取得する必要があり、今回のような処理が必要となりました。
曜日毎にバッチ処理で何かを行うのは、以外とよくある要件の為、覚えておいて損はないと思います。

(2018/10/25 追記)
こちら のページで、曜日別にファイルをバックアップするサンプルコードを公開しています。

スポンサーリンク

QooQ