将文件夹添加到 7z,并在前面显示当前日期

将文件夹添加到 7z,并在前面显示当前日期

我有一个Foo要备份到的文件夹Foo.2018.07.12.7z

到目前为止我尝试了这个命令:

C:\"Program Files"\7-Zip\7z a "Foo%DATE%".7z Foo

但问题是我的日期格式有斜线,所以它会创建嵌套文件夹,如下:Foo12\7\2018.7z

答案1

我更喜欢以与语言环境/用户设置无关的格式获取日期/时间。

实现此目的有两种不同的方法:

:: Q:\Test\2018\07\12\SU_1338640.cmd
@Echo off

:: use wmic to get date in a locale/user settings independent format
for /f "tokens=1-3 delims=.+-" %%A in (
  'wmic os get LocalDateTime^|findstr ^^[0-9]'
) do Set _DT=%%A
Set "Archive=Foo.%_DT:~0,4%.%_DT:~4,2%.%_DT:~6,2%.7z"
Echo Archive=%Archive%

:: use powershell to get date in a locale/user settings independent format
for /f %%A in (
  'Powershell -Nop -C "Get-Date -f yyyy.MM.dd" '
) do Set "_DT=%%A"
Set "Archive=Foo.%_DT%.7z"
Echo Archive=%Archive%

示例输出:

> Q:\Test\2018\07\12\SU_1338640.cmd
Archive=Foo.2018.07.12.7z
Archive=Foo.2018.07.12.7z

答案2

以下是我将用来执行此操作的批处理解决方案,正如您指定的那样,但语法略有不同,而且更明确一些。我还会使用日期变量子串按照您的需要设置正确的日期格式,但我会命名日期变量%Dt%而不是%DATE%


批处理脚本

@ECHO OFF

SET Dt=%date:~10%.%date:~4,2%.%date:~7,2%
SET SrcFolder=C:\Test\Foo
SET DestPath=C:\Destination\Folder

"C:\Program Files\7-Zip\7z" a "%DestPath%\Test.%Dt%.7z" "%SrcFolder%"

更多资源

相关内容