返回列表

[转]简单百年历bat

  1. @echo off
  2. color 3F
  3. mode con cols=40 lines=20
  4. setlocal enabledelayedexpansion
  5. set str=日一二三四五六
  6. set sdate=%date%

  7. :Main
  8. cls&echo.
  9. :: 日期提取、格式化与校验
  10. for /f "tokens=1,2,3 delims=-/: " %%i in ("%sdate%") do (
  11.     (set sy=%%i) && (set sm=%%j) && (set sd=%%k)
  12. )
  13. if not defined sd set sd=1
  14. if not defined sm set sm=%sy%& set sy=%date:~0,4%

  15. (set sy=0000%sy%) && (set sm=00%sm%) && (set sd=00%sd%)
  16. (set sy=%sy:~-4%) && (set sm=%sm:~-2%) && (set sd=%sd:~-2%)
  17. cd.
  18. set /a y=1%sy%-10000, m=1%sm%-100, d=1%sd%-100 2>nul
  19. if errorlevel 1 goto Error
  20. if %y% lss 100 (
  21.     if %y% lss 50 (set /a y+=2000) else (set /a y+=1900)
  22.     set sy=!y!
  23. )
  24. if %m% lss 13 if %d% lss 32 goto Calc

  25. :Error
  26. echo.错误的日期.
  27. pause>nul
  28. set sdate=%date%
  29. goto Main

  30. :Calc
  31. :: 计算每个月的天数
  32. set days=31
  33. for %%i in (4 6 9 11) do if %m% equ %%i set days=30
  34. :: 计算2月份的偏差
  35. set /a leap="^!(y%%4) & ^!(^!(y%%100)) | ^!(y%%400)"
  36. if %m% equ 2 set /a days=28+%leap%
  37. if %m% leq 2 (set /a y-=1& set /a m+=12)
  38. :: 计算指定日期的星期数
  39. set /a w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%%7

  40. echo.  %sy%年%sm%月  查询日:%sy%-%sm%-%sd%,星期!str:~%w%,1!
  41. echo.
  42. :: 生成月历
  43. set /a wb=(w+35-d) %% 7, we=wb+days+1, day=1
  44. echo.    日   一   二   三   四   五   六
  45. echo. ━━━━━━━━━━━━━━━━━━━
  46. set /p= <nul
  47. for /l %%i in (0,1,37) do (
  48.     set "temp=  "
  49.     if %%i GTR %wb% if %%i LSS %we% (
  50.         set temp= !day!
  51.         set temp=!temp:~-2!
  52.         if !d! EQU !day! set temp=★
  53.         set /a day+=1
  54.     )
  55.     set /p=   !temp!<nul
  56.     set /a "wm=(%%i+1)%%7"
  57.     if !wm! equ 0 echo.&echo.&set /p= <nul
  58. )
  59. echo.
  60. echo  ━━━━━━━━━━━━━━━━━━━
  61. echo.  输入日期可查询当日星期并显示当月月历
  62. echo.
  63. set sdate=
  64. set /p sdate=  格式如:07-02-03,[回车]退出:
  65. if defined sdate goto Main
复制代码
将代码保存为 bat 运行即可,可查询 1950-01-01 至 2049-12-31 的日期。

百年历.bat (1.78 KB)

2012-8-16 20:38
下载次数:1
基本信息:kuing,GG,19880618~?,地道广州人,高中毕业,无业游民,不等式爱好者,论坛混混;
现状:冇钱又冇样、冇型又冇款、冇身材又冇文采、冇学历又冇能力、冇高度冇速度冇力度兼夹冇野做!(粤语)

返回列表