我正在尝试将一些日志文件重命名为昨天批处理文件每晚创建一个同名新文件的日期。
我们可以使用以下cmd将文件重命名为今天的日期
ren SampleDTE.TXT SampleDTE-%date:~10,4%%date:~7,2%%date:~4,2%_%time:~0,2%%time:~3,2%.TXT
这会导致文件重命名为// SampleDTE-YYYYDDMM_hhmm.TXT
SampleDTE-20132712_1243.TXT
我想知道如何将文件重命名为昨天的日期。像
这样的东西 SampleDTE-20132612_1243.TXT
提前致谢
答案 0 :(得分:0)
您必须使用变量并进行数学运算:
set /a day=%date:~7,2% - 1
ren SampleDTE.TXT SampleDTE-%date:~10,4%%day%%date:~4,2%_%time:~0,2%%time:~3,2%.TXT
答案 1 :(得分:0)
简单的方法 - 假设您每天定期运行一次
FOR /f %%a IN (sampledteyesterday.txt) DO ECHO ren SampleDTE.TXT SampleDTE-%%a_%time:~0,2%%time:~3,2%.txt
> sampledteyesterday.txt ECHO %date:~10,4%%day%%date:~4,2%
注意 - ren
命令只是ECHO
ed。验证后,请在ECHO
激活之前删除REN
关键字。
您需要设置包含单行sampledteyesterday.txt
的{{1}}文件,以便昨天初始化。
建议:使用YYYYDDMM
可以更容易或更逻辑地进行排序......
答案 2 :(得分:0)
这将在昨天的日期,在批处理文件中使用VBS。
它在所有语言环境中都是可靠的,而%date%变量在不同的计算机和不同的用户上可能会有所不同。
@echo off
set day=-1
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "date-yesterday=%yyyy%-%mm%-%dd%"
echo Yesterday was "%date-yesterday%"
pause
答案 3 :(得分:0)
为避免日期算术,您可以将昨天的日期存储在例如文件中。
yesterday.txt
(包含今天和昨天):
20131227 20131226
批处理文件:
REM Get today (to check if yesterday.txt is valid):
SET today=%DATE:~10,4%%DATE:~7,2%%DATE:~4,2%
REM Read file:
FOR /F "TOKENS=1,2" %%d IN (yesterday.txt) DO (
SET stored_today=%%d
SET yesterday=%%e
)
REM If stored_today not equal to today, assume yesterday is stored_today and update file:
IF NOT "%stored_today%" == "%today%" (
SET yesterday=%stored_today%
>yesterday.txt ECHO %stored_today% %today%
)
REM Test if yesterday is set, exit otherwise.
IF "%yesterday%"=="" ECHO Yesterday unknown! Try again tomorrow.&GOTO:EOF
要使其第一次正常工作,必须手动填写yesterday.txt
。