标题: [日期时间] [已解决]BAT批处理如何把前一天的日期替换成当天的日期? [打印本页]
作者: simon4055 时间: 2014-1-16 17:29 标题: [已解决]BAT批处理如何把前一天的日期替换成当天的日期?
- @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
复制代码
@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 编辑
你没仔细看吧,类似这样改- @echo off
- ::需要调用VBS
- rem 指定天数
- set DaysAgo=1
- >"%temp%\MyDate.vbs" echo LastDate=date()-%DaysAgo%
- >>"%temp%\MyDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
- >>"%temp%\MyDate.vbs" echo wscript.echo FmtDate
- for /f %%a in ('cscript /nologo "%temp%\MyDate.vbs"') do (
- set DstDate=%%a
- )
- set DstDate=%DstDate:~6,2%%DstDate:~4,2%%DstDate:~0,4%
-
- set curdate=%date:~8,2%%date:~5,2%%date:~0,4%
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /s/b *.txt') do (
- (for /f "delims=" %%a in ('type "%%~fi"') do (
- set "foo=%%a"
- set foo=!foo:%dstdate%=%curdate%!
- echo,!foo!
- ))>"%%~fi._"
- move "%%~fi._" "%%~fi"
- )
- pause
- exit
复制代码
不认真,直接复制你的代码,echo时没改出错了
作者: terse 时间: 2014-1-17 10:14
本帖最后由 terse 于 2014-1-18 22:25 编辑
回复 1# simon4055 - @echo off
- set /a y=%date:~,4%,d=1%date:~8,2%-100,"m=(1%date:~5,2%-91)%%12+4,y-=m/14"
- 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"
- set "qdate=%y%%m:~-2%%d:~-2%"
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /s/b *.txt') do (
- (for /f "delims=" %%a in ('type "%%~fi"') do (
- set "foo=%%a"
- set foo=!foo:15012014=%qdate%!
- echo;!foo!
- ))>"%%~fi._"
- move "%%~fi._" "%%~fi"
- )
- pause
- exit
复制代码
原来是前一天日期换成当天 前面没看清 重写- @echo off
- set adate=%date:~,4%%date:~5,2%%date:~8,2%
- set /a y=%date:~,4%,d=1%date:~8,2%-100,"m=(1%date:~5,2%-91)%%12+4,y-=m/14"
- 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"
- set "qdate=%y%%m:~-2%%d:~-2%"
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /s/b *.txt') do (
- (for /f "delims=" %%a in ('type "%%~fi"') do (
- set "foo=%%a"
- set foo=!foo:%qdate%=%adate%!
- echo;!foo!
- ))>"%%~fi._"
- move "%%~fi._" "%%~fi"
- )
- pause
- 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
- @echo off
- %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
-
- for /f "delims=" %%i in ('dir /s/b *.txt') do (
- (for /f "delims=" %%a in ('type "%%~fi"') do (
- set "foo=%%a"
- setlocal enabledelayedexpansion
- set "foo=!foo:%2=%date:~8,2%%date:~5,2%%date:~,4%!"
- echo;!foo!
- endlocal
- ))>"%%~fi._"
- move "%%~fi._" "%%~fi"
- )
- pause
复制代码
作者: simon4055 时间: 2014-1-20 11:38
非常感谢 达到目的了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |