DOS バッチで曜日算出をしてみた
職場で、「 DOS バッチでは曜日を取れない」とか云う声が聞こえてきたので、休憩時間にちょこちょこと書いてみました。(単なる備忘録です)
@echo off setlocal REM 日付の抽出 set YEAR=%DATE:~0,4% set MONTH=%DATE:~5,2% set DAY=%DATE:~8,2% REM 算出の呼び出し call :GETWEEK %YEAR% %MONTH% %DAY% REM 結果表示 echo %ERRORLEVEL% goto END REM ----- 算出ロジック ここから ----- :GETWEEK REM 引数の取得 set CHECKYEAR=%1 set CHECKMONTH=%2 set CHECKDAY=%3 REM 曜日の算出 if %CHECKMONTH% == 1 ( set /A CHECKYEAR=%CHECKYEAR% - 1 set /A CHECKMONTH=%CHECKMONTH% + 12 ) if %CHECKMONTH% == 2 ( set /A CHECKYEAR=%CHECKYEAR% - 1 set /A CHECKMONTH=%CHECKMONTH% + 12 ) set /A WEEK=(%CHECKYEAR% / 4 - %CHECKYEAR% / 100 + %CHECKYEAR% / 400 + (13 * %CHECKMONTH% + 8) / 5 + %DAY%) %% 7 exit /b %WEEK% REM ----- 算出ロジック ここまで ----- :END endlocal @echo on
……まぁ、面倒ではありますね。
R さんのご指摘で、ロジックを修正。ご指摘ありがとうございました。 m(_ _)m( 2009/08/25 追記) バグがあったため修正版の記事を書きました。