只需使用WinRAR命令行批量压缩1个文件夹?

Fir*_*176 9 batch-file winrar

使用WinRAR命令行(C:\Program Files\WinRAR\rar.exe),我要做的就是压缩单个文件夹,(C:\Users\%username%\desktop\someFolder)并可能更改创建的.zip文件的名称.我尝试过"rar.exe a" C:\Users\%username%\desktop\someFile"并且它有效,但它会压缩另一个文件夹(不是我放的那个).

我究竟做错了什么?

你能提供解释吗(也许告诉我递归是什么因为我不熟悉它)?

谢谢

Mof*_*ofi 44

使用其中之一

"%ProgramFiles%\WinRAR\Rar.exe" a -ep1 -idq -r -y "Name of RAR file with path" "%UserProfile%\Desktop\someFolder"
Run Code Online (Sandbox Code Playgroud)

要么

"%ProgramFiles%\WinRAR\Rar.exe" a -ep1 -idq -r -y "Name of RAR file with path" "%UserProfile%\Desktop\someFolder\"
Run Code Online (Sandbox Code Playgroud)

在命令(添加到存档)和开关之后创建具有指定名称的RAR存档文件a

  • -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"
Run Code Online (Sandbox Code Playgroud)

例2:

"%ProgramFiles%\WinRAR\WinRAR.exe" a -afzip -ep1 -ibck -r -y "Name of ZIP file with path" "%UserProfile%\Desktop\someFolder\"
Run Code Online (Sandbox Code Playgroud)

GUI版本WinRAR.exe有许多与控制台版本相同的命令和开关Rar.exe,但是这里显示的差异-afzip仅支持WinRAR.exe-ibck不是在后台-idq运行WinRAR,这意味着最小化到系统托盘而不是在具有可见进度窗口的前台.

有关创建WinRAR.exe命令行启动WinRAR的帮助,请单击最后一个主菜单中的第一个菜单项帮助主题上的帮助,选择帮助选项卡内容,展开列表项命令行模式并使用帮助页面:

  • 命令行语法
  • 字母命令列表
  • 字母切换列表

明智的做法是分别读取文本文件中列出的顺序帮助页面Rar.txt从上到下上创建WinRAR.exeRar.exe在批处理文件或快捷方式文件(*.LNK)的使用命令行.