@echo off
setlocal enabledelayedexpansion
set /p yr= Enter year:
echo.
call:monthdays %yr% list
set mm=1
for %%i in (!list!) do (
call:calcdow !yr! !mm! %%i dow
set/a lsu=%%i-dow
set mf=0!mm!
echo !yr!-!mf:~-2!-!lsu!
set /a mm+=1
)
exit /b
:monthdays yr &list
setlocal
call:isleap %1 ly
for /L %%i in (1,1,12) do (
set /a "nn = 30 + ^!(((%%i & 9) + 6) %% 7) + ^!(%%i ^^ 2) * (ly - 2)
set list=!list! !nn!
)
endlocal & set %2=%list%
exit /b
:calcdow yr mt dy &dow :: 0=sunday
setlocal
set/a a=(14-%2)/12,yr=%1-a,m=%2+12*a-2,"dow=(%3+yr+yr/4-yr/100+yr/400+31*m/12)%%7"
endlocal & set %~4=%dow%
exit /b
:isleap yr &leap :: remove ^ if not delayed expansion
set /a "%2=^!(%1%%4)+(^!^!(%1%%100)-^!^!(%1%%400))"
exit /b
Diff to Previous Revision
--- revision 1 2016-06-07 20:23:56
+++ revision 2 2016-06-07 20:25:00
@@ -11,7 +11,6 @@
echo !yr!-!mf:~-2!-!lsu!
set /a mm+=1
)
-pause
exit /b
:monthdays yr &list