Windows のバッチで実行日の曜日を文字列で確保する必要があったので作ったものをメモ書き
サーバーのデイリーバックアップ先フォルダ名に曜日名が入っていたんです・・・
@rem
@rem 曜日算出モジュール by かわはら
@rem 2014/8/1
@rem 実行日の曜日を算出
@rem output
@rem YYYYMMDD
@rem HHMM
@rem YYYY
@rem MM
@rem DD
@rem EXT YYYYMMDD_HHMM
@rem LOG LOG_YYYYMMDD_HHMM.txt
@rem WEEKDAY 文字列形式の曜日名
@rem Y 0(月)〜6(日)を返す
@rem
@rem broken
@rem DT TM YYYY2 MM2 DD2 X
set DT=%DATE: =0%
set DT=%DT:/=%
set TM=%TIME: =0%
set TM=%TM::=%
set YYYYMMDD=%DT:~0,8%
set HHMM=%TM:~0,4%set EXT=%YYYYMMDD%_%HHMM%
set LOG=LOG_%YYYYMMDD%_%HHMM%.TXTset YYYY=%YYYYMMDD:~0,4%
set MM=%YYYYMMDD:~4,2%
set DD=%YYYYMMDD:~6,2%
@rem 曜日算出 計算方法は↓を利用
@rem http://www.h2.dion.ne.jp/~p_soul/jchieyoubi.htm
@rem 年=A 月=B 日=C とすれば
@rem IF B<3 THEN A=A-1 : B=B+13 : ELSE B=B+1
@rem X=int(365.25*A)+int(30.6*B)+int(A/400)+C-int(A/100)-429
@rem Y=X-int(X/7)*7
@rem 0なら月曜。
@rem 1なら火曜。
@rem 2なら水曜。
@rem 3なら木曜。
@rem 4なら金曜。
@rem 5なら土曜。
@rem 6なら日曜。@rem set /A は算術計算をします
set YYYY2=%YYYY%
set MM2=%MM%
if "%MM%" == "01" set /a YYYY2=%YYYY% -1
if "%MM%" == "01" set MM2=13if "%MM%" == "02" set /a YYYY2=%YYYY% -1
if "%MM%" == "02" set MM2=14set /a MM2=1%MM2% + 1 - 100
@rem ↑MM2 は数字扱いのため、2桁とは限らない
@rem また、 08 09 だと、8進数とみなされてエラーになるため、
@rem 擬似的に1を頭につけて(=100を足して)あとから100を引いて
@rem つじつまあわせ。set /a DD2= 1%dd% - 100
@rem ↑DD2 は数字扱いのため、2桁とは限らない
@rem また 08 09 だと、8進数とみなされてエラーになるため、
@rem 擬似的に1を頭につけて(=100を足して)あとから100を引いて
@rem つじつまあわせ。
@rem ここまでで、 MM2 1月〜12月が (14 15 4 5 6 7 8 9 10 11 12 13)
@rem YYYY2 年は (-1 -1 )
@rem DD2 最初に0がついていない 日付 1 2 .... 9 10... 31set /a X=(%YYYY2% * 36525 )/100 + (%MM2% * 306)/10 + (%YYYY2% / 400) + %DD2% - (%YYYY2% / 100) - 429
set /a Y=%X% - (%X% / 7 ) * 7
if "%Y%" == "0" set WEEKDAY=Monday
if "%Y%" == "1" set WEEKDAY=Tuesday
if "%Y%" == "2" set WEEKDAY=Wednesday
if "%Y%" == "3" set WEEKDAY=Thursday
if "%Y%" == "4" set WEEKDAY=Friday
if "%Y%" == "5" set WEEKDAY=Saturday
if "%Y%" == "6" set WEEKDAY=Sundayset WEEKDAYNO=%Y%
echo %WEEKDAYNO% %WEEKDAY%
pause