Windows 存档后将日期戳附加到文件名

Windows 存档后将日期戳附加到文件名,windows,batch-file,command-line,7zip,Windows,Batch File,Command Line,7zip,我正在批处理文件中使用以下代码: FOR %%i IN (*.bak*) DO 7za a -v1G -r -y -t7z -mx=7 "%%~ni.7za" "%%i" 使用7-zip将每个文件归档到文件夹中。这段代码成功地创建了与原始文件名相同的归档文件(扩展名为7za),但我还想在归档文件的文件名中添加一个日期戳。我知道它看起来像这样:%YYYYMMDD% 当前正在备份的文件如下所示:CPIB_12345.bak 归档文件如下所示:CPIB_12345.7za.001 我希望它看起来像这

我正在批处理文件中使用以下代码:

FOR %%i IN (*.bak*) DO 7za a -v1G -r -y -t7z -mx=7 "%%~ni.7za" "%%i"
使用7-zip将每个文件归档到文件夹中。这段代码成功地创建了与原始文件名相同的归档文件(扩展名为7za),但我还想在归档文件的文件名中添加一个日期戳。我知道它看起来像这样:%YYYYMMDD%

当前正在备份的文件如下所示:CPIB_12345.bak

归档文件如下所示:CPIB_12345.7za.001

我希望它看起来像这样:CPIB_12345@20140606.7za.001

由于我不能添加评论,我将编辑这篇文章

如果除上述情况外,我还有CPIB_12346和CPIB_13526以及其他类似情况,我该怎么办?我如何将日期附加到所有日期

@echo off
(after yours line of code)
rename "PATH\CPIB_12345.7za.001" "CPIB_12345%date%.7za.001"
pause>null
变量%date%自动被系统替换为doday日期。(没有时间)

这里只有一个命令:

rename "path\file" "new file name"
%date%- is replacing word date to current date

这是一个独立于本地时间格式的解决方案:

for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set datetime=%%I

然后,
%datetime:~0,8%
将为您提供
YYYYMMDD

假设英国本地日期格式为DD/MM/YYYY,这应该可以做到

set today=%Date%
set year=%today:~-4%
set month=%today:~3,2%
set day=%today:~,2%
set backup_date=%year%%month%%day%

FOR %%i IN (*.bak*) DO 7za a -v1G -r -y -t7z -mx=7 "%%~ni@%backup_date%.7za" "%%i"

在拆分其他日期格式的日期子字符串时,必须调整使用的位置。

%date%
区分区域,包含非法的文件名字符,在不同的计算机上也可以有日期。