[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
日期计算论坛里有,搜索一下。 5个计算日期的批处理

http://bbs.bathome.net/viewthread.php?tid=874&extra=page%3D1

[ 本帖最后由 随风 于 2008-4-22 22:15 编辑 ]
技术问题请到论坛发帖求助!

TOP

以后发帖请记得把代码用code扩起来,否则不便阅读.
你的这段代码,严格来说简直没法修改,臃肿.思路不清,.........
不过也别急,刚开始都这样,我们也是这样过来的.慢慢来,多看看别人的代码.

认真读读这篇代码吧,这是 namejm 写的,很容易懂.

:
  1. @echo off&color 1f
  2. :: code namejm
  3. set day=%date%
  4. set days=0
  5. echo.&echo.&echo       指定的日期是:%day%
  6. :Main
  7. cls&echo.&set /p input=      请指定要追溯的天数:
  8. setlocal enabledelayedexpansion
  9. :: 提取日期
  10. for /f "tokens=1-3 delims=-/. " %%i in ("%day%") do (
  11.     set /a sy=%%i, sm=100%%j %% 100, sd=100%%k %% 100
  12. )
  13. set /a sd-=input
  14. if %sd% leq 0 call :count
  15. cls&echo.&echo.
  16. echo       指定的日期是:%day%
  17. echo.
  18. set sm=0%sm%
  19. set sd=0%sd%
  20. echo       %input% 天前的日期是:%sy%-%sm:~-2%-%sd:~-2%
  21. pause>nul
  22. goto Main
  23. :count
  24. set /a sm-=1
  25. if !sm! equ 0 set /a sm=12, sy-=1
  26. call :days
  27. set /a sd+=days
  28. if %sd% leq 0 goto count
  29. goto :eof
  30. :days
  31. :: 获取指定月份的总天数
  32. set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)"
  33. set /a max=28+leap
  34. for /f "tokens=%sm%" %%a in (31 %max% 31 30 31 30 31 31 30 31 30 31) do (
  35.    set days=%%i
  36. )
  37. goto :eof
复制代码
技术问题请到论坛发帖求助!

TOP

返回列表