我正在尝试创建一个备份脚本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
应该这么做。
答案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