Winrar 命令行根据当前日期压缩名称中带有日期的特定文件

Winrar command line compress specific files with date in name depending on current date

我正在尝试使用 WinRAR 命令行压缩 SQL 服务器备份 (.bak) 文件命令。这是我使用的命令:

def fileType = "*.bak"

"cmd /c \"${rarCmd}\" a ${rarName} ${parameters} ${sourceDir} ${fileType}".execute()

我的文件夹中有这些文件:

Basket_backup_2014_07_30_010007.bak
Basket_backup_2016_07_31_010007.bak
Basket_backup_2016_08_05_010006.bak
Basket_backup_2016_08_05_010007.bak

我只想压缩今天创建的文件。那么我应该如何修改 fileType 变量以压缩名称中包含 2016_08_05 的文件?

你可以这样做:

def fileType = "*_${new Date().format('yyyy_MM_dd')}_*.bak"

启动 WinRAR 并在菜单 帮助 中单击菜单项 帮助主题。在 Contents 选项卡上,打开列表项 Command line mode 并首先单击 Command line syntax,您将看到在打开的帮助页面上:

WinRAR <command> -<switch1> -<switchN> <archive> <files...> <@listfiles...> <path_to_extract\>

现在让我们将这一行与您的代码行进行比较:

"${rarCmd}" a ${rarName} ${parameters} ${sourceDir} ${fileType}

您的代码中显然已经存在错误,在命令后首先指定存档文件名,然后指定开关,而不是首先指定开关,然后指定存档文件名。

并且${sourceDir}${fileType}之间不应该有space,而是一个反斜杠字符。

然后在目录列表中打开子列表 Switches 并单击 Alphabetic switches list。在从上到下阅读此列表的同时使用此列表构建您的 parameters。最有可能让你感兴趣的开关

-cfg- -ep1 -ibck -inul -m5 -r- -tl -tn23h -y --

-tn23h 表示文件的最后修改日期在最近 23 小时内(文件时间比当前时间晚 23 小时)。您还可以使用 -tn1d 表示最后修改时间为 1 天内的文件。

如果使用控制台版本 Rar.exe 而不是 GUI 版本 WinRAR.exe 使用 WinRAR 程序文件夹中的文本文件 Rar.txt因为这是控制台版本的手册。控制台和 GUI 版本之间有一些不同的开关。