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

时间:2019-12-07 17:43:53

标签: batch-file winrar

我在N:\working中有多个文件夹。

  • N:\working\1
  • N:\working\2
  • N:\working\3

我想RAR在64位Windows上将它们全部单独压缩。

这是我到目前为止的代码:

@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中。

1 个答案:

答案 0 :(得分:3)

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

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

在命令提示符窗口中使用相同的命令行而不使用批处理文件:

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

@上没有for,因为在命令提示符窗口中运行此命令行完全没有用。当创建新的存档文件时,@Rar.exe左侧的cmd.exe会被删除,以查看N:\working的命令行输出。

FOR 在指定的目录I中搜索非隐藏的子目录,并在对该子目录执行Rar.exe之前将完整的合格目录名分配给循环变量Rar.exe

a递归(-r)(.rar)将 FOR 找到的子目录中的所有目录和文件添加到RAR归档文件中,其名称为使用最佳压缩(N:\working)在指定目录-m5中创建的当前子目录和文件扩展名-inul,但未向控制台窗口输出任何信息,并忽略了可能发生的所有错误(-cfg-)在文件夹压缩期间。压缩时将忽略标准配置(-ep1)。压缩的子目录的名称及其路径未添加到RAR存档文件(for /?和要压缩的文件夹以反斜杠结尾)中。

打开一个command prompt窗口,运行/D并阅读解释选项Rar.rxt的输出帮助(目录搜索)。

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

也可以使用WinRAR.exe使用之前创建的配置文件来完成此任务,该配置文件以存储在快捷方式文件中的命令行中的配置文件名称作为唯一选项开始WinRAR.exe。由于fetch(`https://api.openweathermap.org/data/2.5/weather?q=New York&units=imperial&appid=28af81603ac21f0fe4c75478dad21818`).then(res => res.json()).then(data => console.log(data)); 是Windows GUI桌面应用程序,因此该解决方案无法打开控制台窗口。