使用循环来 rar 主文件夹中的多个子文件夹

Using a loop to rar multiple subfolders in a main folder

我有一个包含 3 个子文件夹的主文件夹...

我希望批处理脚本抓取第一个子目录 Folder1,将其复制到另一个位置,例如 C:\Temp\Folder 然后 WinRAR 开始压缩Folder1。将 Folder1 复制到其他位置后,可以在主文件夹中将其删除。

WinRAR完成压缩后Folder1也可以在C:\Temp\Folder中删除。所以只剩下 .rar 文件了。

然后脚本从 Folder2 开始,和 Folder1 一样。

到目前为止我只有这个,并不知道如何实现上面的内容。

"C:\Program Files\WinRAR\Rar.exe" a -ep1 -mt5 -v50M -r -df "NAME-OF-THE-RAR-FILE" "C:\Users\Admin\Folder\*.*"

打开命令提示符 window,键入并执行 for /? 并阅读此命令的帮助输出。选项 /D 已在第一个帮助页面上进行了解释,该页面用于在目录的每个子目录上执行命令。

下面的批处理文件使用控制台版本 WinRAR 和命令 mC:\Users\Admin\Folder 中的每个子文件夹存档(移动 = 存档并在成功时删除)而不是命令 a 和开关 -df.

@echo off
for /D %%F in ("C:\Users\Admin\Folder\*") do (
    "%ProgramFiles%\WinRAR\Rar.exe" m -cfg- -ep1 -inul -m5 -mt5 -r -tl -v50M -y "%%~F.rar" "%%~F\"
    rd "%%~F"
)

所以结果是

  • C:\Users\Admin\Folder
    Folder1.rar
    Folder2.rar
    Folder3.rar

根据文件夹中所有文件的大小以及归档每个文件夹需要多少 50 MB 卷,归档和删除文件夹后文件夹可以包含更多文件。

文件夹名称 Folder1 未包含在文件 Folder1.rar 中,因为第三行末尾最后一个参数 "%%~F\" 中的反斜杠。

如果文件夹名称 Folder1 也应包含在存档文件 Folder1.rar

中,批处理文件会更容易
@echo off
for /D %%F in ("C:\Users\Admin\Folder\*") do (
    "%ProgramFiles%\WinRAR\Rar.exe" m -cfg- -ep1 -inul -m5 -mt5 -r -tl -v50M -y "%%~F.rar" "%%~F"
)

我认为这里没有必要将每个文件夹复制到一个临时文件夹只是为了存档。