找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27054|回复: 5

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

[复制链接]
发表于 2011-2-9 10:22:34 | 显示全部楼层 |阅读模式
本帖最后由 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 编辑 ]

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-2-9 10:47:27 | 显示全部楼层
问题在day=%date:~8,2%这句,当日期为8、9号时,day=08或09,这样的形式不是数值的正确形式,即使是16进制或8进制。
发表于 2011-2-9 11:19:12 | 显示全部楼层
  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 编辑 ]
发表于 2011-2-9 12:16:03 | 显示全部楼层
批处理获取指定天数之前的日期
http://bbs.bathome.net/thread-3330-1-1.html
发表于 2011-2-9 12:26:47 | 显示全部楼层
  1. '>nul 2>nul&@echo off&&cls&cscript.exe /nologo /e:vbs %0&pause&exit
  2. WScript.Echo DateAdd("d",-2,Date)
复制代码
发表于 2017-4-22 14:27:03 | 显示全部楼层
  1. powershell "(get-date).adddays(-1).ToString('yyyy-MM-dd HH:mm:ss')"
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 06:14 , Processed in 0.018360 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表