Batch file Windows批处理:如何在文件名中附加格式(yyyymmdd.hhmmss)的当前日期和时间?

Batch file Windows批处理:如何在文件名中附加格式(yyyymmdd.hhmmss)的当前日期和时间?,batch-file,Batch File,对于()中的/D%%A,执行“C:\Program Files\7-Zip\7z.exe”A-tzip“%%A.Zip”-xr!。蝙蝠“%%A”-r-x!*。xls 上述批处理将自动压缩目录中的文件。。压缩时,我想以一种格式(YYYYMMDD.HHMMSS)附加日期和时间。。 例如,假设文件夹名为“University”。如果我运行批处理文件,最终的zip名称应创建为“University_YYYYMMDD.HHMMSS.zip”。以下是构建字符串的解决方案: set hour=%time:~0

对于()中的/D%%A,执行“C:\Program Files\7-Zip\7z.exe”A-tzip“%%A.Zip”-xr!。蝙蝠“%%A”-r-x!*。xls

上述批处理将自动压缩目录中的文件。。压缩时,我想以一种格式(YYYYMMDD.HHMMSS)附加日期和时间。。
例如,假设文件夹名为“University”。如果我运行批处理文件,最终的zip名称应创建为“University_YYYYMMDD.HHMMSS.zip”。

以下是构建字符串的解决方案:

set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
echo hour=%hour%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
echo min=%min%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
echo secs=%secs%

set year=%date:~-4%
echo year=%year%
set month=%date:~3,2%
if "%month:~0,1%" == " " set month=0%month:~1,1%
echo month=%month%
set day=%date:~0,2%
if "%day:~0,1%" == " " set day=0%day:~1,1%
echo day=%day%

set datetimef=%year%%month%%day%.%hour%%min%%secs%

echo datetimef=%datetimef%
因此,您可以将变量%datetimef%与输出文件的名称连接起来:

for /D %%A in () do "C:\Program Files\7-Zip\7z.exe" a -tzip "%datetimef%_%%A.zip" -xr!.bat "%%A" -r -x!*.xls

此代码将在XP Pro及更高版本中为您提供可靠的YY-DD-MM-yyy-HH-Min-Sec变量

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "fullstamp=%YYYY%%MM%%DD%.%HH%%Min%%Sec%"

for /D %%A in (*) do "C:\Program Files\7-Zip\7z.exe" a -tzip "%%A_%fullstamp%.zip" -xr!.bat "%%A" -r -x!*.xls

类似问题:请注意:使用
%date%
%time%
的解决方案是特定于机器/区域设置的,可以从一台机器更改到另一台机器,甚至当您更改自己机器上的区域设置时。Wmic可以很容易地为您提供始终相同格式的变量,VBS脚本也可以提供一些计算。大多数防错解决方案都有疑问@Ilya链接到-但是,它几乎没有被投票:(由于WMIC是在Windows 2000中引入的,所以它也应该在那里工作。但是,没有一个需要检查。@sergiykheylyk感谢您的评论。FWIW WMIC不在XP Home中,我检查了我的W2K Pro,默认情况下它也没有WMIC。它依赖于区域设置。在某些区域设置中不起作用,例如瑞典