如何使用批处理脚本将文件夹中的每个子文件夹压缩到 rar.exe 的单独 RAR 档案中?
How to compress each subfolder in a folder into separate RAR archives with rar.exe using a batch script?
我里面有多个文件夹 N:\working
。
N:\working
N:\working
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.rar
、2.rar
和3.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
样本输出
我里面有多个文件夹 N:\working
。
N:\working
N:\working
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.rar
、2.rar
和3.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
样本输出