如何使用批处理脚本将文件夹中的每个子文件夹压缩到 rar.exe 的单独 RAR 档案中?

How to compress each subfolder in a folder into separate RAR archives with rar.exe using a batch script?

我里面有多个文件夹 N:\working

我想在 64 位 Windows.

上对它们进行 RAR 压缩

这是我目前的代码:

@ECHO OFF
CD N:\working

SET rar_executable=C:\Rar.exe
ECHO  Using WinRAR executable: %rar_executable%

ECHO.
%rar_executable% a -r -ep1 -m0 "Test.rar"

pause

它生成包含所有三个文件夹的文件 Test.rar。但是我想将三个文件夹归档到归档文件1.rar2.rar3.rar.

该任务可以使用仅包含一个命令行的批处理文件来完成。

@for /D %%I in ("N:\working\*") do @"%ProgramFiles%\WinRAR\Rar.exe" a -cfg- -ep1 -inul -m5 -r -- "%%I.rar" "%%I\"

在不使用批处理文件的情况下在命令提示符 window 中使用相同的命令行:

for /D %I in ("N:\working\*") do "%ProgramFiles%\WinRAR\Rar.exe" a -cfg- -ep1 -inul -m5 -r -- "%I.rar" "%I\"

没有 @ 留给 for,因为在 运行 在命令提示符 window 中使用此命令行完全没用。 @ left to Rar.exe 删除了完整的限定文件名,以便在开始创建新存档文件时查看 cmd.exe 的命令行输出。

FOR 在指定目录 N:\working 中搜索非隐藏子目录,并在执行 [=15] 之前将完整的限定目录名称分配给循环变量 I =] 这个子目录。

Rar.exe 递归地 (-r) 添加 (a) FOR 找到的子目录中的所有目录和文件到 RAR 压缩包使用最佳压缩 (-m5) 在指定目录 N:\working 中创建的具有当前子目录名称和文件扩展名 .rar 的文件,没有任何输出到控制台 window 并忽略所有错误 ( -inul),这可能在文件夹压缩期间发生。标准配置在压缩时被忽略 (-cfg-)。压缩子目录的名称及其路径不会添加到 RAR 存档文件中(-ep1 和要压缩的文件夹以反斜杠结尾)。

打开 command prompt window、运行 for /? 并阅读输出帮助解释选项 /D(目录搜索)。

双击打开 WinRAR 程序文件文件夹中的文本文件 Rar.rxt 这是 Rar.exe 的手册解释命令 a 和此处使用的开关。

此任务也可以通过 WinRAR.exe 使用在开始 WinRAR.exe 之前创建的配置文件来完成,配置文件名称作为存储在快捷方式文件中的命令行上的唯一选项。此解决方案不会打开控制台 window,因为 WinRAR.exe 是一个 Windows GUI 桌面应用程序。

尝试将此脚本作为 .bat 文件,它将每个文件夹压缩为当前目录中的 RAR 文件,还会显示一些额外的细节,这在压缩大量数据时非常有用。

.Bat 文件脚本

@echo off
@for /D %%I in (".\*")  do echo started at %date% %time% compressing... "%%I" && @"%ProgramFiles%\WinRAR\Rar.exe" a -cfg- -ep1 -inul -m5 -r -- "%%I.rar" "%%I\" 
echo "Completed Successfully !!!"
pause

样本输出