关于powershell:如何在批处理脚本中插入文件名的日期和时间?

How to insert date and time to a filename in a batch script?

本问题已经有最佳答案,请猛点这里访问。

我为Jenkins作业编写了一个批处理脚本,它编译了一个".net"代码,其中一个步骤就是在提取新的编译代码之前备份当前目录。

我正在使用这些行来提取我想要插入备份文件名的日期和时间:

1
2
3
4
for /F"tokens=2-4 delims=/" %%i in ('date /t') do set date=%%k%%i%%j
for /f"tokens=1-2 delims=/:" %%a in ('time /t') do set time=%%a%%b
powershell.exe -nologo -noprofile -command"& { Add-Type -A System.IO.Compression.FileSystem; [IO.Compression.ZipFile]::CreateFromDirectory('bin', 'bin-%date%_%time%.zip'); }"
xcopy bin-%date%_%time%.zip c:\temp

问题出在time /t的输出上,如下所示:

1
01:00 AM

这会导致文件名为:

1
bin-20170412-0100 AM.zip

这是一个问题。

我想从时间变量中省略"AM",怎么做呢?


因为你显然没有使用powershell的问题,所以用以下代码替换前两行:

1
2
For /F %%A In ('Powershell -C"Get-Date -Format yyyyMMdd_HHmm"'
) Do Set"archive=bin-%%A.zip"

然后,您可以在变量%archive%中设置完整的归档文件名,以便在以下命令中使用。