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

[文本处理] 批处理或VBS怎样获取前一天的日期?

[复制链接]
发表于 2011-5-27 11:50:17 | 显示全部楼层 |阅读模式
环境描述:
          自动备份昨天的日志上传ftp  备份完成后删除本地的日志。
日志的文件格式 : 例如今天是2011年5月23号,那么日志的格式就是 ws20110522log.txt

问题:关键怎样获取前一天的日期部分,其他文件名都是不变的
尝试使用 set fn=%date:~0,4%%date:~5,2%%date:~8,2%      
              set/a fn=fn-1  
但这个代码是有问题的,比如 6月1号的时候,20110601   本来应该是20110531  但结果为 20110600

*************************************************************************
在网上找到一个bat脚本 可以解决不过比较麻烦, 求助一下有没有更简单的方法,或者使用vbs 来写
望高手指点!
  1. set yyyy=%date:~0,4%
  2. set mm=%date:~5,2%
  3. set dd=%date:~8,2%
  4. set /a nd=!dd!-1
  5. ::如果象3月1日减一天是0天就...
  6. if !nd!==0 call :dd0
  7. if !mm!==0 call :mm0
  8. set yyyymmdd=!yyyy!!mm!!nd!
  9. echo !yyyymmdd!
  10. pause

  11. :dd0
  12. set /a mm=!mm!-1
  13. for %%a in (1 3 5 7 8 10 12)do set %%add=31
  14. set /a pddd=!yyyy!*10/4
  15. set pd2d=!pddd:~-1,1!
  16. set 2dd=28
  17. if !pd2d!==0 set 2dd=29
  18. for %%b in (4 6 9 11)do set %%bdd=30
  19. set nd=!%mm%dd!
  20. goto :eof
  21. :mm0
  22. set /a yyyy=!yyyy!-1
  23. set mm=12
  24. set nd=31
  25. goto :eof

  26. pause
复制代码
发表于 2011-5-27 12:00:45 | 显示全部楼层

  1. Dim yestaday
  2. yestaday = DateAdd("d", -1, Date)
  3. MsgBox yestaday
复制代码
发表于 2011-5-27 12:12:27 | 显示全部楼层
批处理获取指定天数之前的日期
http://bbs.bathome.net/thread-3330-1-1.html
发表于 2011-5-27 12:24:13 | 显示全部楼层
Dim yestaday
yestaday = Date - 1
MsgBox yestaday
发表于 2011-5-27 12:31:41 | 显示全部楼层
新方案:

  1. @echo off
  2. if "%1" neq "" goto next
  3. mshta vbscript:createobject("wscript.shell").run("%~fs0 "^&date-1,1,0)(window.close)
  4. goto :eof
  5. :next
  6. echo 昨天的日期为:%1
  7. pause>nul
复制代码
发表于 2011-5-27 13:42:45 | 显示全部楼层
如果mshta能用echo多好
 楼主| 发表于 2011-5-27 14:11:19 | 显示全部楼层
2# batman


非常感谢高手指点
但是这个输出的格式不行, 2011/5/26      我的文件的格式是ws20110526log.txt ,请问这个格式可以改么?
发表于 2011-5-27 15:07:31 | 显示全部楼层

  1. @echo off
  2. if "%1" neq "" goto next
  3. mshta vbscript:createobject("wscript.shell").run("%~fs0 "^&date-1,1,0)(window.close)
  4. goto :eof
  5. :next
  6. for /f "tokens=1-3 delims=/-\:" %%a in ("%1") do  set "y=%%a"&set "m=0%%b"&set "d=0%%c"
  7. set "str=%y%%m:~-2%%d:~-2%"
  8. echo 昨天的日期为:%str%
  9. pause>nul
复制代码
 楼主| 发表于 2011-5-28 22:47:26 | 显示全部楼层
非常感谢指点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 14:10 , Processed in 0.019745 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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