前回、前日日付けを求めるスクリプトを書いたので、今回は翌日版。2月の処理がちょっと複雑になってしまった。
@echo off REM 日付の翌日を求める。結果は ANS にセット。 REM 引数(YYYYMMDD or YYYY-MM-DD or YYYY/MM/DD)がないときは本日とする。 if "%1"=="" (for /F %%A in ('date /t') do set ANS=%%A) else set ANS=%1 if not "%ANS:~8%"=="" set/a ANS=%ANS:~0,4%%ANS:~5,2%%ANS:~8,2% set/a ANS+=1 if 1%ANS:~-2% leq 128 goto ans if %ANS:~-2%==32 set/a ANS+=100-31&if not %ANS:~4,2%==12 goto ans if %ANS:~4,2%==13 set/a ANS+=10000-1200&goto ans if %ANS:~4,2%==02 if %ANS:~-2% geq 29 set/a ANS+=2-(!(%ANS:~0,4%%%4)^^!(%ANS:~0,4%%%100)^^!(%ANS:~0,4%%%400))*(31-%ANS:~-2%) for %%M in (02 04 06 09 11) do if %ANS:~-4%==%%M31 set/a ANS+=100-30 :ans
引数形式や使い方、日付けの正当性チェック無しなど、すべて前回と同じ。
if 1%ANS:~-2% leq 128 goto ans
は不要だが、多くのケースでの速度向上のために入れてある。
n日前後を求めるJScript内蔵版はまた別途書くことにする。