如何使用WinRAR命令行批量压缩一个文件夹?

14
使用WinRAR命令行(C:\Program Files\WinRAR\rar.exe),我尝试压缩一个单独的文件夹(C:\Users\%username%\desktop\someFolder)并可能更改所创建的.zip文件的名称。 我尝试了“rar.exe a”“C:\Users\%username%\desktop\someFile”,它可以工作,但它会压缩另一个文件夹(而不是我放置的那个)。
我做错了什么?
你能否提供解释(并告诉我递归是什么,因为我不熟悉它)?
谢谢
1个回答

58

使用任意一个

"%ProgramFiles%\WinRAR\Rar.exe" a -ep1 -idq -r -y "Name of RAR file with path" "%UserProfile%\Desktop\someFolder"
或者
"%ProgramFiles%\WinRAR\Rar.exe" a -ep1 -idq -r -y "Name of RAR file with path" "%UserProfile%\Desktop\someFolder\"

在命令a(添加到归档文件)和开关后,创建一个指定名称的RAR归档文件:

  • -idq ... 启用安静模式,仅显示错误消息,
  • -ep1 ... 排除基础目录以外的指定文件/文件夹名称,
  • -r ... 递归归档/压缩所有文件和子目录,
  • -y ... 在所有询问中都假定为“是”。

使用第一条命令行不带反斜杠结尾,将文件夹someFolder 包括在归档文件中。

使用第二条命令行带有反斜杠结尾,文件夹someFolder 不包括在归档文件中,只有该文件夹的文件和子目录。

换句话说,选项-ep1排除了指定文件或文件夹名称中最后一个反斜杠之前的路径内容,然后将其添加到归档文件中,这就解释了在命令行上指定不带或带反斜杠的文件夹之间的区别。

递归表示不仅添加指定文件夹中的文件,还要添加所有子文件夹及其文件。

因此,RAR必须首先在指定的文件夹中搜索子文件夹。如果找到一个子文件夹,则进入该子文件夹并再次搜索子文件夹。如果找到另一个子文件夹,则进入该子文件夹并继续搜索子文件夹。如果没有找到,则将该子文件夹中的文件添加到归档文件中,或只添加文件夹名称(如果该子文件夹为空)。然后返回父文件夹并继续搜索下一个子文件夹。如果没有找到,则添加此子文件夹的文件。然后返回父文件夹并继续搜索子文件夹,以此类推。

注意:

控制台版本的Rar.exe仅支持创建/提取RAR归档文件。它不支持ZIP归档文件。这在文本文件Rar.txt中明确写明,该文件是WinRAR控制台版本的手册。需要使用WinRAR.exe代替RAR.exe来创建ZIP归档文件。

示例1:

"%ProgramFiles%\WinRAR\WinRAR.exe" a -afzip -ep1 -ibck -r -y "Name of ZIP file with path" "%UserProfile%\Desktop\someFolder"

例子2:

"%ProgramFiles%\WinRAR\WinRAR.exe" a -afzip -ep1 -ibck -r -y "Name of ZIP file with path" "%UserProfile%\Desktop\someFolder\"

GUI版本的WinRAR.exe和控制台版本的Rar.exe有很多相同的命令和选项,但是它们之间存在一些差异,如下所示:-afzip只支持WinRAR.exe,而在后台运行WinRAR时使用-ibck而不是-idq,这意味着将其最小化到系统托盘而不是前台显示进度窗口。

要获取有关创建WinRAR.exe命令行的帮助,请启动WinRAR,单击最后一个主菜单帮助上的第一个菜单项帮助主题,选择帮助选项卡目录,展开列表项命令行模式并利用以下帮助页面:

  • 命令行语法
  • 按字母顺序列出的命令列表
  • 按字母顺序列出的选项列表

建议按照所列顺序阅读帮助页面或从上到下阅读文本文件Rar.txt,以创建可在批处理文件或快捷方式文件(*.lnk)中使用的WinRAR.exeRar.exe命令行。


非常感谢您提供的详细信息,您帮了我很大的忙。我有一个问题想问……是否有办法在批处理文件中检查压缩过程是否成功完成? - sam
@sam 在 WinRAR 的程序文件夹中打开文本文件 Rar.txt 并阅读关于 退出值 的部分。WinRAR 的帮助文档还包含页面 __WinRAR 退出代码列表__。因此,条件 if errorlevel 1 goto NoneSuccessful 可以在下一条命令行上使用,以跳转到标签 NoneSuccessful,当退出值大于或等于1时。Rar.exeWinRAR.exe 的退出值被分配给环境变量 ERRORLEVEL,就像对任何执行的应用程序一样。 - Mofi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接