[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off&setlocal enabledelayedexpansion
  2. :han
  3. set a=
  4. set b=
  5. set/p a=起始日期,格式20071221:
  6. set/p b=终止日期,格式20080310,允许为空:
  7. if "%a%"=="" echo.此数值不允许为空,请按任意键重新开始&pause>nul&goto :han
  8. set m=寒夜312831303130313130313031孤星
  9. for /f "tokens=1,2,3 delims=-:/ " %%i in ("%date%") do set i=%%i%%j%%k
  10. if "%b%"=="" (if %i% gtr %a% (set b=%i%) else set a=%i%&set b=%a%)
  11. if "%a:~4,1%"=="0" (set tm=%a:~5,1%) else set tm=%a:~4,2%
  12. if "%a:~6,1%"=="0" (set td=%a:~7,1%) else set td=%a:~6,2%
  13. set ty=%a:~0,4%&echo.%a%
  14. :ye
  15. set/a "n=tm*2","td=td+1","y=(^!(ty%%4)&^!^!(ty%%100))|^!(ty%%400)"
  16. set e=!m:~%n%,2!
  17. if %tm%==2 if %y%==1 set e=29
  18. if %td% gtr %e% set/a "tm=tm+1",td=1
  19. if %tm%==13 set/a "ty=ty+1",tm=1
  20. set em=0%tm%&set ed=0%td%&set em=!em:~-2!&set ed=!ed:~-2!&set d=%ty%!em!!ed!
  21. if %d% gtr %b% echo 完成&pause>nul&goto :eof
  22. echo.%d%&goto :ye
复制代码
改了好几次,问题太多。。。还请大家多多指教

[ 本帖最后由 hanyeguxing 于 2010-4-8 01:05 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

原帖由 namejm 于 2010-4-7 22:58 发表
  hanyeguxing在4楼的代码没有做准确的平年闰年检测;FOR在7楼的代码输出的格式为 2010-4-1 ,由于未做充分测试,其他问题尚未发现。

判定公历闰年遵循的一般规律为: 四年一闰,百年不闰,四百年再闰.
崩溃。。。。。。。光记得4年的事了,其他的不是忘记了,而是根本就不知道,汗一个。。。

[ 本帖最后由 hanyeguxing 于 2010-4-7 23:27 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

原帖由 neorobin 于 2010-4-7 23:43 发表
4 楼还有起始月输出不正确的问题:e=!m:~%n%,2!如此截取是有问题的

没明白。。。能不能具体说一下?
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

原帖由 neorobin 于 2010-4-8 00:17 发表
实质是变量延迟的问题, 调试代码echo off&setlocal enabledelayedexpansion
set/p a=起始日期,格式20071221:
set/p b=终止日期,格式20080310:
set m=寒夜312831303130313130313031孤星
if "%a:~4,1%"=="0" ...

谢谢,第一次是分两行写的,结果后来贪图美观就给和并到一行了,忘记了延迟的问题。。。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

看楼上各位把for /l用到这境界,羡一个。。。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表