[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[日期时间] [已解决]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%


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



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

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


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


非常感谢

TOP

%date:~8,2%%date:~5,2%%date:~0,4% 这个是当天的日期,你要把15012014替换成当天的日期?

TOP

回复 3# simon4055


    说明你还没看懂
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 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时没改出错了
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

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

TOP

回复 4# apang


    是的

TOP

回复 5# Batcher

非常感谢 可能是太复杂了 看不懂 正在努力学习

TOP

回复 6# xxpinqz

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

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

TOP

  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

评分人数

TOP

非常感谢  达到目的了

TOP

返回列表