[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
你给出的代码是错误的,因为没有对获取的月、日的字首0做处理,将导致set/a 运算出错以及定义变量出错。
call,33 这里的33是33天前的意思,可以根据需要修改
echo.%D% 获取并显示N天前的日期
  1. @echo off&setlocal enabledelayedexpansion
  2. call:D,33
  3. echo.%D%
  4. pause&exit
  5. :D
  6. for /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do set Y=%%a&set M=%%b&set D=%%c
  7. if "%M:~0,1%"=="0" set M=%M:~1%
  8. if "%D:~0,1%"=="0" set D=%D:~1%
  9. set/a D-=%1
  10. if %D% gtr 0 goto:Y
  11. :M
  12. set/a M-=1
  13. if !M!==0 set/a Y-=1,M=12
  14. set/a "T=^!(M-2)","R=(^!(Y%%4)&^!^!(Y%%100))|^!(Y%%400)","C=^!(M-4)|^!(M-6)|^!(M-9)|^!(M-11)","D=T*(28+R)+C*30+(^!T&^!C)*31+D"
  15. if %D% leq 0 goto:M
  16. :Y
  17. set M=0%M%&set D=0%D%&set D=%Y%-!M:~-2!-!D:~-2!
复制代码

[ 本帖最后由 hanyeguxing 于 2010-11-29 23:09 编辑 ]
1

评分人数

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

TOP

回复 4楼 的帖子

你把系统日期改成8月9日,你看你的代码还能正常吗?
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

脚本要注意空格分隔!~
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表