标题: [数值计算] [已解决批处理为如何获取昨天/前一天的日期? [打印本页]
作者: hucuibai 时间: 2011-2-9 10:22 标题: [已解决批处理为如何获取昨天/前一天的日期?
本帖最后由 pcl_test 于 2017-4-22 14:20 编辑
- @echo off
- setlocal enabledelayedexpansion
- set/a Y=%date:~0,4%,M=1%date:~5,2%%%100-1,day=%date:~8,2%,R=Y%%4
- if %M%==0 set/a M=12,Y-=1
- set/a M2=M*2-2
- set A=312831303130313130313031
- set E=!A:~%M2%,2!
- if %R%==0 if %M%==2 set E=29
- if %day%==1 (set/a date=%Y%%M%%E%) else (set /a date=%date:~0,4%%date:~5,2%%date:~8,2%-1)
- echo !date!
- 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
- @echo off
- 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
- if %D%==0 set/a M-=1
- if %M%==0 set/a M=12,Y-=1
- set A=313128313031303131303130
- call set E=%%A:~%M2%,2%%
- if %R%==0 if %M%==2 set E=29
- if %D%==0 set D=%E%
- set Day=%Y%年%M%月%D%日
- echo %Day%
- pause
复制代码
或- @echo off
- 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
- if %D%==0 (set/a M-=1) else goto:d
- if %M%==0 set/a M=12,Y-=1
- set A=313128313031303131303130
- call set D=%%A:~%M2%,2%%
- if %R%==0 if %M%==2 set D=29
- :d
- set Day=%Y%年%M%月%D%日
- echo %Day%
- pause
复制代码
- @echo off
- 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)"
- 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
- '>nul 2>nul&@echo off&&cls&cscript.exe /nologo /e:vbs %0&pause&exit
- WScript.Echo DateAdd("d",-2,Date)
复制代码
作者: pcl_test 时间: 2017-4-22 14:27
- powershell "(get-date).adddays(-1).ToString('yyyy-MM-dd HH:mm:ss')"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |