winrar压缩文件夹使用批处理

时间:2013-11-30 18:33:54

标签: batch-file cmd rar winrar

在文件夹中,我有一些文件夹。我想将所有文件夹分别压缩到foldername.rar并删除原始文件。我想批量执行此功能。

我尝试了其他答案中给出的那些,但他们只压缩文件,如果存在,或什么都不做。在这里,我只需要将文件夹压缩到各自的存档。请帮忙

2 个答案:

答案 0 :(得分:4)

WinRAR 包括两个命令行工具 rar.exe和unrar.exe ,其中rar.exe压缩并且unrar.exe解压缩文件。

两者都位于可安装版本的“C:\ Program Files \ WinRAR”文件夹中。

假设,如果D:\ test下有多个文件夹,并且您希望每个文件夹在父文件夹中从批处理文件中获取自己的.rar文件,则这适用于您:

@echo off
setlocal
set zip="C:\Program Files\WinRAR\rar.exe" a -r -u -df
dir D:\test /ad /s /b > D:\test\folders.txt
for /f %%f in (D:\test\folders.txt) do if not exist D:\test\%%~nf.rar %zip% D:\test \%%~nf.rar %%f
endlocal
exit

<强>解释....

  1. 它将在同一父文件夹的父文件夹D:\ test下创建所有文件夹/子文件夹的.rar文件。
  2. 然后,它将删除父文件夹D:\ test下的所有原始文件夹/子文件夹,因此您只能将档案保留在同一位置。

    • “a”命令添加到存档

    • “ - r”开关递归子文件夹

    • “ - u”切换。与“a”命令结合使用时,相当于“u”命令。添加新文件并更新存档中已有文件的旧版本

    • “ - df”开关在将文件移动到存档后删除文件

答案 1 :(得分:1)

也许这样的事情,改变你喜欢的C:\ testfolder \。 在我的例子中,我有3个文件夹(其中包含随机文件和子文件夹):一个,两个和三个

@echo off
cd "C:\testfolder\"
for /d %%G in ("*") do (
"%programfiles%\WinRAR\Rar.exe" a -r %%G.rar %%G
rd /s /q %%G
)