如何用批处理文件写:获取当前日期的前一天

kxghost 2009-08-17 03:36:41
如何用批处理文件写:获取当前日期的前一天?

时间格式为:2009-08-17
今天是2009-08-17,怎样写才能得到这个日期:2009-08-16
到明天,就要获得这个日期:2009-08-17
...全文
9329 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq24447678 2012-08-01
  • 打赏
  • 举报
回复
7楼,感谢你。不过估计你看不到我的感谢
ygzeng 2012-01-31
  • 打赏
  • 举报
回复
厉害,cmd的功能确实弱了些,这么普遍的需求累死人啊
xiaodongli 2012-01-05
  • 打赏
  • 举报
回复
谢谢!!!
yhl1979 2011-11-28
  • 打赏
  • 举报
回复
7楼大虾太强大了,支持一下
somebaby1 2011-11-04
  • 打赏
  • 举报
回复

支持
yyhakusu 2011-09-15
  • 打赏
  • 举报
回复
强大啊
clarkchiang 2011-09-08
  • 打赏
  • 举报
回复
7楼大虾太强大了,支持一下
icbc29 2011-09-07
  • 打赏
  • 举报
回复
能不能给我yyyymmdd格式,谢谢!
icbc29 2011-09-07
  • 打赏
  • 举报
回复
七楼的,我看不到啊。。。。。
zdt2005 2011-09-05
  • 打赏
  • 举报
回复
谢谢七楼的分享
wuhener 2011-05-26
  • 打赏
  • 举报
回复
好厉害啊。多谢啦
iamdfccong 2011-02-11
  • 打赏
  • 举报
回复
这么强大的帖子,不顶过不了自己这关啊
plypanda 2011-01-07
  • 打赏
  • 举报
回复
赞一下7楼,同时谢谢!因为我也引用了您的代码
sutdy 2010-08-31
  • 打赏
  • 举报
回复
能写出这样的批处理,超强啊
我一直想自己写个
starsbaby 2010-07-13
  • 打赏
  • 举报
回复
好东西,顶了!~谢谢
pengjm111 2010-06-09
  • 打赏
  • 举报
回复
fdsfdsfdasfafding
Blaider 2010-03-03
  • 打赏
  • 举报
回复
好东西,收藏了,找了好久的东西
kxghost 2009-08-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ljc007 的回复:]
test.bat

BatchFile code@echooffrem 计算指定天数之前的日期set DaysAgo=1rem 假设系统日期的格式为yyyy-mm-ddcall:DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDaysset/a PassDays-=%DaysAgo%call:DaysToDate %PassDays% DstYear DstMonth DstDayset DstDate=%DstYear%-%DstMonth%-%DstDay%echo %DaysAgo%天的日期是%DstDate%pausegoto:eof:DateToDays %yy% %mm% %dd% dayssetlocal ENABLEEXTENSIONSset yy=%1&set mm=%2&set dd=%3if1%yy% LSS200if1%yy% LSS170(set yy=20%yy%)else(set yy=19%yy%)set/a dd=100%dd%%%100,mm=100%mm%%%100set/a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2set/a j=j/5+dd+y*365+y/4-y/100+y/400-2472633endlocal&set%4=%j%&goto:EOF:DaysToDate %days% yy mm ddsetlocal ENABLEEXTENSIONSset/a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=aset/a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5set/a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10(if %mm% LSS10set mm=0%mm%)&(if %dd% LSS10set dd=0%dd%)endlocal&set%2=%yy%&set%3=%mm%&set%4=%dd%&goto:EOF
[/Quote]
谢谢 007  这个就运行正确了
ljc007 2009-08-17
  • 打赏
  • 举报
回复
test.bat

[code=BatchFile]@echo off
rem 计算指定天数之前的日期
set DaysAgo=1
rem 假设系统日期的格式为yyyy-mm-dd
call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
set /a PassDays-=%DaysAgo%
call :DaysToDate %PassDays% DstYear DstMonth DstDay
set DstDate=%DstYear%-%DstMonth%-%DstDay%
echo %DaysAgo%天的日期是%DstDate%
pause
goto :eof

:DateToDays %yy% %mm% %dd% days
setlocal ENABLEEXTENSIONS
set yy=%1&set mm=%2&set dd=%3
if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set %4=%j%&goto :EOF

:DaysToDate %days% yy mm dd
setlocal ENABLEEXTENSIONS
set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF
[/code]
colorskypig 2009-08-17
  • 打赏
  • 举报
回复
这方面高级语言确实占很大便宜,随便用个循环语句就能办到!
加载更多回复(5)

6,868

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧