如何使用归档文件名中的归档文件夹的日期创建RAR归档?

时间:2018-05-19 07:35:07

标签: timestamp winrar nextcloud

我使用的云服务Dropbox不会保留上传文件夹的原始时间戳。我必须使用 WinRAR 压缩要在云中备份的文件夹,以便在将其上传到Dropbox之前保留原始文件夹的日期/时间。但是我找不到一种简单的方法来创建存档文件名,该文件名包含文件夹的当前最后修改日期,格式为YYYYMMDD,位于存档文件的文件名中。

命令行

for %I in ("d:\doc\aatmp") do @echo %~tI

在命令提示符窗口中执行输出:

2014-06-01 22:12

因此 FOR 的区域相关日期格式为YYYY-MM-DD hh:mm

用于创建RAR存档的当前使用的命令行是:

winrar a -r -agYYYYMMDD-HHMM kk "d:\doc\aatmp\"

参考:like the _completeLogin function here

如何将归档文件夹d:\doc\aatmp的日期转换为归档文件名kk.rar而不是当前日期/时间?

1 个答案:

答案 0 :(得分:1)

可以使用包含以下命令行的批处理文件在您的Windows计算机上使用您的区域设置完成此任务:

@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "FolderToBackup=D:\doc\aatmp"

rem Get last modification date/time of the folder to backup
rem in region dependent format which is YYYY-MM-DD hh:mm.
for %%I in ("%FolderToBackup%") do set "FolderTimeStamp=%%~tI"

rem Get from this date/time string just the year, month
rem and day of month from the date without the hyphens.
set "FolderTimeStamp=%FolderTimeStamp:~0,4%%FolderTimeStamp:~5,2%%FolderTimeStamp:~8,2%"

rem Compress the folder to backup into a RAR archive file with
rem last modification date of folder used in archive file name.
"%ProgramFiles%\WinRAR\WinRAR.exe" a -ac -cfg- -dh -ep1 -ibck -m4 -oh -ol -os -ow -r -ts -y -- kk_%FolderTimeStamp%.rar "%FolderToBackup%"

rem Restore the environment as set before usage of command SETLOCAL at top.
endlocal

分配给环境变量FolderTimeStamp的字符串例如是:

2014-06-01 22:12

此字符串应修改为:

20140601

这是使用字符串替换来完成的,如在命令提示符窗口set /?中运行的命令 SET 输出的帮助所解释的那样以及What does %date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2% mean?上的答案

字符索引计数从0开始。:~之后的第一个数字始终是字符索引(从左侧开始,从右侧开始在负数上),第二个数字此处始终字符数。

年份的第一个字符是字符索引0,年份有四个字符。因此,第一个字符串替换为:~0,4,以便将索引0中的字符转换为索引3

字符索引4处的连字符不应该是文件名,因此会被忽略。

文件夹时间戳字符串中的后两个字符是字符索引56的月份,这是使用:~5,2的原因。

字符索引7处的连字符再次被忽略,因为文件名不需要。

文件夹时间戳字符串中的后两个字符是字符索引89的月份日期,这是使用:~8,2的原因。

从字符索引10开始的最后六个字符对文件名不感兴趣。因此,这六个字符也会被忽略。

确定要备份的文件夹的最后修改日期后执行

WinRAR ,并重新格式化适用于存档文件名的时间戳,以使用存档文件名中的该字符串创建RAR存档,并指定以下附加选项用开关:

    压缩后
  • -ac ...清除存档属性,以了解上次存档中包含哪些文件以及自上次备份以来修改了哪些文件。
  • -cfg- ...忽略默认配置文件和环境变量。
  • -dh ...打开共享文件。
  • -ep1 ...从名称中排除基本文件夹,这意味着D:\doc未包含在存档中,但文件夹aatmp及其所有属性,时间戳和权限都包含在存档中。请参阅Simply compress 1 folder in batch with WinRAR command line?上的答案,了解有关在命令行"%FolderToBackup%"上指定差异的详细信息,而不是在结尾处使用反斜杠,或"%FolderToBackup\"在结尾处使用反斜杠。
  • -ibck ...在后台运行 WinRAR ,这意味着最小化到系统托盘。
  • -m4 ...使用良好压缩。
  • -oh ...将硬链接保存为链接而不是文件。
  • -ol ...将符号链接保存为链接而不是文件。
  • -os ...保存NTFS流。
  • -ow ...处理文件安全信息。
  • -r ...以递归方式添加所有子文件夹和文件。
  • -ts ...保存所有文件时间(修改,创建,访问)。
  • -y ...对所有查询假设
  • -- ...不再切换。

启动 WinRAR ,在第一个菜单项帮助主题上单击最后一个主菜单帮助,单击选项卡目录在列表项命令行模式上,单击列表项切换,并阅读所用交换机的相应帮助页面以获取详细信息。

创建的RAR存档是一个真正的备份,因为它不仅包含具有上次修改日期和属性的文件和子文件夹,还包括创建和上次访问日期,如果任何文件有一个,备用数据流,硬和符号链接和NTFS安全权限,能够真正恢复使用适当的开关提取RAR存档的所有内容,并使用支持恢复甚至NTFS安全权限的帐户。

要了解上面未详细说明的其他使用命令及其工作方式,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • echo /?
  • endlocal /?
  • for /?
  • rem /?
  • set /?
  • setlocal /?