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

[数值计算] [已解决批处理为如何获取昨天/前一天的日期?

本帖最后由 pcl_test 于 2017-4-22 14:20 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set/a Y=%date:~0,4%,M=1%date:~5,2%%%100-1,day=%date:~8,2%,R=Y%%4
  4. if %M%==0 set/a M=12,Y-=1
  5. set/a M2=M*2-2
  6. set A=312831303130313130313031
  7. set E=!A:~%M2%,2!
  8. if %R%==0 if %M%==2 set E=29
  9. if %day%==1 (set/a date=%Y%%M%%E%) else (set /a date=%date:~0,4%%date:~5,2%%date:~8,2%-1)
  10. echo !date!
  11. pause
复制代码
我想做的就是当天取前一天的日期,这个批处理就是在8,9号两天的时候取不到前一天的日期,我搞不懂为什么,求高手解答,还有就是里面的变量M在前面已经去零了,但是在后面我又想把零加上去!该怎么写!

[ 本帖最后由 hucuibai 于 2011-2-9 14:41 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

问题在day=%date:~8,2%这句,当日期为8、9号时,day=08或09,这样的形式不是数值的正确形式,即使是16进制或8进制。

TOP

  1. @echo off
  2. set/a Y=%date:~0,4%,M=1%date:~5,2%%%100,D=1%date:~8,2%%%100-1,R=Y%%4,M2=M*2-2
  3. if %D%==0 set/a M-=1
  4. if %M%==0 set/a M=12,Y-=1
  5. set A=313128313031303131303130
  6. call set E=%%A:~%M2%,2%%
  7. if %R%==0 if %M%==2 set E=29
  8. if %D%==0 set D=%E%
  9. set Day=%Y%年%M%月%D%日
  10. echo %Day%
  11. pause
复制代码
  1. @echo off
  2. set/a Y=%date:~0,4%,M=1%date:~5,2%%%100,D=1%date:~8,2%%%100-1,R=Y%%4,M2=M*2-2
  3. if %D%==0 (set/a M-=1) else goto:d
  4. if %M%==0 set/a M=12,Y-=1
  5. set A=313128313031303131303130
  6. call set D=%%A:~%M2%,2%%
  7. if %R%==0 if %M%==2 set D=29
  8. :d
  9. set Day=%Y%年%M%月%D%日
  10. echo %Day%
  11. pause
复制代码
  1. @echo off
  2. set/a D=1%date:~8,2%%%100-1,M=1%date:~5,2%%%100-!D,Y=%date:~0,4%-!M,M+=!M*12,"K=!(M-4)|!(M-6)|!(M-9)|!(M-11)","D+=!D*(!(M-2)*(28+!(Y%%4))+K*30+(!!(M-2)&!K)*31)"
  3. Echo %Y%年%M%月%D%日&pause
复制代码

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

TOP

批处理获取指定天数之前的日期
http://bbs.bathome.net/thread-3330-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. '>nul 2>nul&@echo off&&cls&cscript.exe /nologo /e:vbs %0&pause&exit
  2. WScript.Echo DateAdd("d",-2,Date)
复制代码

TOP

  1. powershell "(get-date).adddays(-1).ToString('yyyy-MM-dd HH:mm:ss')"
复制代码

TOP

返回列表