Board logo

标题: [数值计算] [已解决批处理为如何获取昨天/前一天的日期? [打印本页]

作者: hucuibai    时间: 2011-2-9 10:22     标题: [已解决批处理为如何获取昨天/前一天的日期?

本帖最后由 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 编辑 ]
作者: abcd    时间: 2011-2-9 10:47

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

  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 编辑 ]
作者: Batcher    时间: 2011-2-9 12:16

批处理获取指定天数之前的日期
http://bbs.bathome.net/thread-3330-1-1.html
作者: broly    时间: 2011-2-9 12:26

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

作者: pcl_test    时间: 2017-4-22 14:27

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





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2