Date 重新命名文件名以包含昨天';使用命令提示符设置日期

Date 重新命名文件名以包含昨天';使用命令提示符设置日期,date,batch-file,cmd,Date,Batch File,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 我想知道如何将文件重新命名为昨天的日期。差不多

我试图将一些日志文件重命名为昨天的日期,此时批处理文件每晚都会创建一个同名的新文件

我们可以使用下面的命令将文件重命名为今天的日期

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

提前感谢

您必须使用一个变量并进行计算:

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

简单的方法——假设你每天定期运行一次

对于(sampledteyestday.txt)中的/f%%a,请执行ECHO ren SampleDTE.txt SampleDTE-%%a时间:~0,2%%时间:~3,2%.txt
>sampledteyestday.txt ECHO%日期:~10,4%%day%%日期:~4,2%
注意-
ren
命令只需
ECHO
ed。验证后,删除
ECHO
关键字,然后激活
ren

您需要为昨天设置包含单行
YYYYDDMM
sampledteysterday.txt
文件进行初始化


建议:使用排序更简单或逻辑性更强的
YYYYMMDD

这将在批处理文件中使用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

为了避免使用日期算术,您可以将昨天的日期存储在文件中

beday.txt
(包含今天和昨天):

批处理文件:

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

要使其第一次正常工作,必须手动填写昨日.txt。

或例如…您是否每天运行批处理?IE,批处理是昨天运行的,这样我们可以存储昨天的日期吗?@LS\u dev我每天晚上都运行批处理是的,我每天定期运行一次。我尝试使用您的命令,但它始终返回“%”此时出现意外情况。“”。我已经创建了一个包含YYYYMMDD的sampledteyestDay.txt。我遗漏了什么?它总是返回…什么?您似乎正在从提示符运行命令。从提示符运行命令时,需要将元变量
%%a
(在本例中)的所有用法减少到
%a
。不过,将其作为批处理文件运行要容易得多——double加上对tyops免疫。按原样取出行,弹出一行
@echo off
作为第一行,
setlocal
作为第二行,并另存为名为(eg)
rensampledte.bat
的文件。在提示符下,
rensampledte
将执行批处理文件。只需做一点工作,您就可以使用任务调度器安排它运行,这样它就可以每天自动运行一次。现在我试着用cmd&bat,效果非常好。谢谢。这一批取决于其他供应商的成功。所以不需要安排时间。哦,小心点!这里有几个陷阱。首先是如果这一天是啊@谢谢,我会做出这些改变。还在等着试试你刚才回答的另一个。酷!我不知道VB脚本,但这就是目的。谢谢
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