[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 abcdshenji 于 2011-5-29 18:37 编辑
  1. @echo off||检查日期合法性(yyyymmdd)
  2. :top
  3. cls
  4. set /p dt=Enter date:
  5. echo %dt%|findstr "^[0-9]*$">nul||(call :lp "日期只能是数字")
  6. if %dt% gtr 10000000 (
  7. if %dt% lss 30000000 (ver>nul) else (
  8. call :lp "只能是3000年以内"
  9. )
  10. ) else (
  11. call :lp "不足1000年"
  12. )
  13. set/a y=%dt%/10000,m=%dt%%%10000/100,d=%dt%%%100
  14. set "ds=312831303130313130313031"
  15. for /l %%i in (1 1 12) do (
  16. if %m% equ %%i (
  17. set /a n=%m%*2
  18. setlocal enabledelayedexpansion
  19. set n=!n:~-2!
  20. endlocal
  21. )
  22. )
  23. if %d% gtr 0 (
  24. if %d% leq %n% (call :lp "合法") else (
  25. call :lp "%m%月没有%d%天"
  26. )
  27. ) else call :lp "天数不能是0"
  28. pause>nul&goto :top
  29. :lp
  30. echo %~1&pause>nul&goto :top
  31. goto :EOF
复制代码
没有进行平润年判断。。。这么多if else没什么效率可言就是了。。凑合着看吧。。
1

评分人数

    • batman: 参与了就是好的,呵呵PB + 5

TOP

只能用一次findstr就能检查这么多要求哦。。原谅我水平非常有限。。唉在batman面前实在是丢脸了。。

TOP

返回列表