| @echo off&color 1f&mode con: lines=15 cols=40 | | title 日历 输入格式如:2008-9 | | | | set "var=日 一 二 三 四 五 六" | | set "max= 1"&set "rq=" | | :start | | setlocal enabledelayedexpansion | | if not defined rq set rq=%date:~0,4%-%date:~5,2% | | if "!rq:~2,1!"=="" set rq=%date:~0,4%-%rq% | | if "!rq:~3,1!"=="" set rq=%date:~0,4%-%rq% | | set "rq=%rq%-1" | | for /f "tokens=1,2 delims=/\-: " %%a in ("%rq%") do ( | | set /a y=%%a,m=100%%b%%100 | | ) | | set /a leap="^!(y%%4)&^!(^!(y%%100))|^!(y%%400)+28" | | set "str=31 %leap% 31 30 31 30 31 31 30 31 30 31" | | for /f "tokens=%m% delims= " %%a in ("%str%") do ( | | for /l %%i in (2 1 %%a)do set mm= %%i&set "max=!max!!mm:~-5!" | | ) | | call :Date2Day "%date%" "%rq%" ok | | for /l %%a in (1 1 %ok%) do set "num= !num!" | | set "max=!num!!max!" | | echo.&echo %y% 年 %m% 月 | | echo.&echo %var% | | for /l %%a in (1 1 8) do ( | | if defined max ( | | echo !max:~0,32! | | set "max=!max:~35!" | | )) | | echo.&echo.&echo 请输入 年-月 如:2008-2 | | echo.&set /p rq= &cls | | endlocal&set rq=%rq%&goto start | | :Date2Day 计算指定日期的星期及相隔的天数(封装) | | setlocal enabledelayedexpansion&set "n=" | | for %%i in ("%~1" "%~2") do ( | | for /f "tokens=1-3 delims=/-:\., " %%a in ('echo/%%~i') do ( | | set /a yy=%%a,mm=100%%b%%100,dd=100%%c%%100) | | set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2 | | set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633 | | if not defined n (set /a n=j) else (set /a n-=j)) | | for %%a in (一/1 二/2 三/3 四/4 五/5 六/6 日/0) do ( | | for /f "tokens=1,2 delims=/" %%i in ("%%a")do set %%i=%%j&set ".%%j=%%i") | | if %n% gtr 0 (set /a d=^(7-n%%7+%date:~-1%^)%%7) else ( | | set /a d=^(~n+1+%date:~-1%^)%%7) | | endlocal&set %~3=%d%&goto :EOFCOPY |
|