Board logo

标题: [日期时间] [已解决]BAT批处理如何把前一天的日期替换成当天的日期? [打印本页]

作者: simon4055    时间: 2014-1-16 17:29     标题: [已解决]BAT批处理如何把前一天的日期替换成当天的日期?

  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%


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



我的目的是把 相同目录下面的文本文件的 日期可以替换 把昨天的日期替换成今天的
作者: Batcher    时间: 2014-1-16 17:40

http://www.bathome.net/thread-3330-1-1.html
作者: simon4055    时间: 2014-1-16 17:59

回复 2# Batcher


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


非常感谢
作者: apang    时间: 2014-1-16 18:25

%date:~8,2%%date:~5,2%%date:~0,4% 这个是当天的日期,你要把15012014替换成当天的日期?
作者: Batcher    时间: 2014-1-16 19:39

回复 3# simon4055


    说明你还没看懂
作者: xxpinqz    时间: 2014-1-17 08:19

本帖最后由 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时没改出错了
作者: terse    时间: 2014-1-17 10:14

本帖最后由 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
复制代码

作者: simon4055    时间: 2014-1-18 22:04

回复 4# apang


    是的
作者: simon4055    时间: 2014-1-18 22:07

回复 5# Batcher

非常感谢 可能是太复杂了 看不懂 正在努力学习
作者: simon4055    时间: 2014-1-18 22:18

回复 6# xxpinqz

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

我的目的是吧 相同目录下面的文本文件的 日期可以替换  把前一天的日期替换成今天的
作者: apang    时间: 2014-1-19 00:28

  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
复制代码

作者: simon4055    时间: 2014-1-20 11:38

非常感谢  达到目的了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2