7-Zip CMD:将当前日期添加到存档中,并仅包含存档中最后修改的文件夹

7-Zip CMD:将当前日期添加到存档中,并仅包含存档中最后修改的文件夹

我正在尝试创建一个备份脚本7-Zip我已经完成了其他所有工作,但这两个问题仍然困扰着我。

首先,我想添加一个带有创建日期的时间戳,如下所示:3.11.2010 Backup.7z

那么dd.mm.yyyy格式。我尝试了在互联网上找到的几个版本,但没有一个能按照我想要的方式工作。我该怎么办?

其次,我只想将最后修改的文件夹添加到存档中(无论目录中有多少个文件夹;我只需要最新的)。基本上,我有这样的事情:

App_v.1.0.0.4.exe_Url_2um2yok5q4vpoxnvnscpq3adfwff4wsmi
App_v.1.0.0.5.exe_Url_ft4mnvbu54hfrgdhxrahj4imlmermdsoe

因此,我只想添加最新的 (1.0.0.5) 文件夹。这些文件夹会更改,并且始终具有不同的名称,因此基于名称的排序不是一个好主意。

答案1

7z a -r "%DATE:~7,2%.%DATE:~4,2%.%DATE:~-4% Backup".7z

将创建具有格式的档案DD.MM.YYYY Backup.7z

解释:回显将%DATE%按照您的区域日期格式设置打印日期。

D:\>echo %DATE%
Thu 11/04/2010

通过使用~x,y说明符,您可以对字符串/子字符串进行提取 -您想要提取的x起始字符和字符数在哪里。y

关于第二点:

我只想将最后修改的文件夹添加到存档中(无论目录中有多少个文件夹,我只需要最新的)。

7z u -r "%DATE:~2,2%.%DATE:~5,2%.%DATE:~-4% Backup".7z 

应该这么做。

7zip 日期

答案2

您可以使用“Windows 管理工具”。 看看这个

test1.bat

set mydate=
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined mydate set mydate=%%x
echo Current date is %mydate%

结果:

当前日期为 20140202145547.557000+060

不管“控制面板”中的“区域设置”(日期格式)如何,它总是返回 YYYYMMDD。

答案3

7zip 命令行没有执行您所需任务的逻辑。如果您运行的是 Linux,则必须弄清楚如何在 shell 脚本中执行此操作。如果您使用的是 Windows,则可以尝试使用 DOS 批处理语言(可能足够强大)、powershell(需要您安装某些东西),或者编写 vbscript (.vbs) 文件,这应该是一个很好的解决方案。

如果您决定采用 vbs 路线,我建议您研究将 filesystemobject 与 vbscript 结合使用。 http://www.devguru.com/technologies/vbscript/14048.asp

答案4

我有更简单的解决方案:

7z a "%DATE%_%TIME:~0,2%.%TIME:~3,2%_Backup.7z" c:\test

输出:

17.03.2019_18.43_备份.7z

相关内容