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

[日期时间] [已解决]BAT批处理如何把前一天的日期替换成当天的日期?

[复制链接]
发表于 2014-1-16 17:29:42 | 显示全部楼层 |阅读模式
  1. @echo off
  2. for /f "delims=" %%i in ('dir /s/b *.txt') do (
  3. for /f "delims=" %%a in ('type "%%~fi"') do (
  4. set "foo=%%a"
  5. call,set foo=%%foo:15012014=%date:~8,2%%date:~5,2%%date:~0,4%%%
  6. call,echo/%%foo%%>>"%%~fi._"
  7. )
  8. move "%%~fi._" "%%~fi"
  9. )
  10. pause
  11. exit
复制代码
@echo off
  for /f "delims=" %%i in ('dir /s/b *.txt') do (
         for /f "delims=" %%a in ('type "%%~fi"') do (
                 set "foo=%%a"
                  call,set foo=%%foo:15012014=%date:~8,2%%date:~5,2%%date:~0,4%%%
                 call,echo/%%foo%%>>"%%~fi._"
)
  move "%%~fi._" "%%~fi"
)
pause
exit

大概就差一步了

如何把15012014,改写成前一天的日期  

日期格式是这样的%date:~8,2%%date:~5,2%%date:~0,4%


前一天的日期取不到啊..求大神帮助!



我的目的是把 相同目录下面的文本文件的 日期可以替换 把昨天的日期替换成今天的

评分

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

查看全部评分

发表于 2014-1-16 17:40:00 | 显示全部楼层
 楼主| 发表于 2014-1-16 17:59:08 | 显示全部楼层
回复 2# Batcher


    貌似加不到我这个批处理里面
这个帖子我仔细看过了!


非常感谢
发表于 2014-1-16 18:25:36 | 显示全部楼层
%date:~8,2%%date:~5,2%%date:~0,4% 这个是当天的日期,你要把15012014替换成当天的日期?
发表于 2014-1-16 19:39:23 | 显示全部楼层
回复 3# simon4055


    说明你还没看懂
发表于 2014-1-17 08:19:47 | 显示全部楼层
本帖最后由 xxpinqz 于 2014-1-20 12:18 编辑

你没仔细看吧,类似这样改

  1. @echo off
  2. ::需要调用VBS
  3. rem 指定天数
  4. set DaysAgo=1
  5. >"%temp%\MyDate.vbs" echo LastDate=date()-%DaysAgo%
  6. >>"%temp%\MyDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
  7. >>"%temp%\MyDate.vbs" echo wscript.echo FmtDate
  8. for /f %%a in ('cscript /nologo "%temp%\MyDate.vbs"') do (
  9.   set DstDate=%%a
  10. )
  11. set DstDate=%DstDate:~6,2%%DstDate:~4,2%%DstDate:~0,4%

  12. set curdate=%date:~8,2%%date:~5,2%%date:~0,4%
  13. setlocal enabledelayedexpansion
  14. for /f "delims=" %%i in ('dir /s/b *.txt') do (
  15.     (for /f "delims=" %%a in ('type "%%~fi"') do (
  16.         set "foo=%%a"
  17.         set foo=!foo:%dstdate%=%curdate%!
  18.         echo,!foo!
  19.     ))>"%%~fi._"
  20.     move "%%~fi._" "%%~fi"
  21. )
  22. pause
  23. exit
复制代码
不认真,直接复制你的代码,echo时没改出错了
发表于 2014-1-17 10:14:52 | 显示全部楼层
本帖最后由 terse 于 2014-1-18 22:25 编辑

回复 1# simon4055
  1. @echo off
  2. set /a y=%date:~,4%,d=1%date:~8,2%-100,"m=(1%date:~5,2%-91)%%12+4,y-=m/14"
  3. set /a "JD=1461*Y/4+153*M/5+d-5071,y=(JD*4-489)/1461,d=jd-1461*y/4,m=d*100/3061,d-=153*m/5-100,y+=m/14,m-=m/14*12-99"
  4. set "qdate=%y%%m:~-2%%d:~-2%"
  5. setlocal enabledelayedexpansion
  6. for /f "delims=" %%i in ('dir /s/b *.txt') do (
  7.     (for /f "delims=" %%a in ('type "%%~fi"') do (
  8.         set "foo=%%a"
  9.         set foo=!foo:15012014=%qdate%!
  10.         echo;!foo!
  11.     ))>"%%~fi._"
  12.     move "%%~fi._" "%%~fi"
  13. )
  14. pause
  15. exit
复制代码
原来是前一天日期换成当天 前面没看清 重写
  1. @echo off
  2. set adate=%date:~,4%%date:~5,2%%date:~8,2%
  3. set /a y=%date:~,4%,d=1%date:~8,2%-100,"m=(1%date:~5,2%-91)%%12+4,y-=m/14"
  4. set /a "JD=1461*Y/4+153*M/5+d-5071,y=(JD*4-489)/1461,d=jd-1461*y/4,m=d*100/3061,d-=153*m/5-100,y+=m/14,m-=m/14*12-99"
  5. set "qdate=%y%%m:~-2%%d:~-2%"
  6. setlocal enabledelayedexpansion
  7. for /f "delims=" %%i in ('dir /s/b *.txt') do (
  8.     (for /f "delims=" %%a in ('type "%%~fi"') do (
  9.         set "foo=%%a"
  10.         set foo=!foo:%qdate%=%adate%!
  11.         echo;!foo!
  12.     ))>"%%~fi._"
  13.     move "%%~fi._" "%%~fi"
  14. )
  15. pause
  16. exit
复制代码
 楼主| 发表于 2014-1-18 22:04:49 | 显示全部楼层
回复 4# apang


    是的
 楼主| 发表于 2014-1-18 22:07:29 | 显示全部楼层
回复 5# Batcher

非常感谢 可能是太复杂了 看不懂 正在努力学习
 楼主| 发表于 2014-1-18 22:18:14 | 显示全部楼层
回复 6# xxpinqz

哦  大概是这个效果  非常感谢 不过运行会报错

我的目的是吧 相同目录下面的文本文件的 日期可以替换  把前一天的日期替换成今天的
发表于 2014-1-19 00:28:57 | 显示全部楼层
  1. @echo off
  2. %1mshta vbscript:createobject("wscript.shell").run("""%~0"" : "^&right("0"^&day(date-1),2)^&right("0"^&month(date-1),2)^&year(date-1))(close)&exit/b

  3. for /f "delims=" %%i in ('dir /s/b *.txt') do (
  4.     (for /f "delims=" %%a in ('type "%%~fi"') do (
  5.         set "foo=%%a"
  6.         setlocal enabledelayedexpansion
  7.         set "foo=!foo:%2=%date:~8,2%%date:~5,2%%date:~,4%!"
  8.         echo;!foo!
  9.         endlocal
  10.     ))>"%%~fi._"
  11.     move "%%~fi._" "%%~fi"
  12. )
  13. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-1-20 11:38:07 | 显示全部楼层
非常感谢  达到目的了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 00:06 , Processed in 0.034993 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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