如何使用WinRAR将文件夹中的每个子文件夹压缩到单独的RAR存档中?

时间:2014-07-24 11:37:27

标签: batch-file directory rar winrar

我是批处理文件编码的新手,需要你的帮助。

我是这些目录:

c:\rar\temp1\xy.jpg
c:\rar\temp1\sd.jpg
c:\rar\temp1\dd.jpg

c:\rar\temp2\ss.jpg
c:\rar\temp2\aa.jpg
c:\rar\temp2\sd.jpg

c:\rar\temp3\pp.jpg
c:\rar\temp3\ll.jpg
c:\rar\temp3\kk.jpg

我想将它们压缩到这个

c:\rar\temp1\temp1.rar
c:\rar\temp2\temp2.rar
c:\rar\temp3\temp3.rar

如何使用WinRAR完成此操作?

4 个答案:

答案 0 :(得分:6)

使用 WinRAR 也可以在不使用批处理文件的情况下完成此操作,不完全符合要求,但与所需内容类似。

  1. 启动 WinRAR 并导航到文件夹c:\rar\
  2. 选择文件夹temp1temp2temp3,然后点击工具栏中的添加按钮。
  3. 由于存档名称现在指定RAR存档的文件夹,例如c:\rar\
  4. 切换到标签文件,然后选中选项将每个文件放入单独的存档
  5. 点击按钮确定
  6. WinRAR 现在创建3个RAR档案,文件夹temp1.rartemp2.rartemp3.rar位于文件夹c:\rar\中,每个档案包含相应的档案包含所有文件和子文件夹的文件夹。

    要添加的文件列表也可以在选项卡文件上进行更改,方法是输入要排除的文件中的*.txt 以忽略这些文件中的文本文件创建档案的文件夹。

    最后,在文件中的文件选项卡上输入*.jpg是有意义的文件无压缩存储,因为JPEG文件通常包含已经压缩的数据和因此 WinRAR 无法真正压缩文件的数据。

答案 1 :(得分:1)

在Python v3.x中:

  • 在Python v3.7上测试
  • 在Windows 10 x64上测试
import os

# NOTE: Script is disabled by default, uncomment final line to run for real.
base_dir = "E:\target_dir"
# base_dir = os.getcwd()  # Uncomment this to run on the directory the script is in.

# Stage 1: Get list of directories to compress. Top level only.
sub_dirs_raw = [os.path.join(base_dir, o) for o in os.listdir(base_dir) if os.path.isdir(os.path.join(base_dir, o))]

# Stage 2: Allow us exclude directories we do not want (can omit this entire section if we wish).
dirs = []
for d in sub_dirs_raw:
    if "legacy" in d or "legacy_old" in d:
        continue  # Skip unwanted directories
    print(d)
    dirs.append(d)

# Stage 3: Compress directories into .rar files.
for d in dirs:
    os.chdir(d)  # Change to target directory.
    # Also adds 3% recovery record using "-rr3" switch.
    cmd = f"\"C:\Program Files\\WinRAR\\rar.exe\" a -rr3 -r {d}.rar *"
    print(cmd)
    # Script is disabled by default, uncomment this next line to execute the command.
    # os.system(cmd)

注意:

  • 脚本只能执行打印命令,除非通过删除开头的os.system(cmd)取消注释最后一行#
  • 运行脚本,它将打印出将执行的DOS命令。当您对结果感到满意时,请取消注释最后一行以使其真正运行。
  • 示例:如果有一个包含三个文件夹mydir1mydir2mydir3的目录,它将创建三个.rar文件:mydir1.rar,{{ 1}},mydir2.rar
  • 此演示代码将跳过名称中带有“ legacy”和“ legacy_old”的目录。您可以更新以添加自己的目录以跳过。
  • 要执行脚本,请安装Python 3.x,将上面的行粘贴到mydir3.rar中,然后从任何目录运行DOS命令script.py。使用第二行设置目标目录。或者,使用PyCharm运行脚本。

答案 2 :(得分:0)

这应该工作它还检查文件是否压缩好。 您可能需要更改此部分" cd Program Files \ WinRAR"取决于winrar的安装位置。

@echo Off
Cd\
cd Program Files\WinRAR
    rar a -r c:\rar\temp1\temp1.rar c:\rar\temp1\*.jpg c:\rar\temp1\
        if "%ERRORLEVEL%"=="0" ( Echo Files compressed
        ) Else Echo Failed
    rar a -r c:\rar\temp2\temp2.rar c:\rar\temp2\*.jpg c:\rar\temp2\
        if "%ERRORLEVEL%"=="0" ( Echo Files compressed
        ) Else Echo Failed
    rar a -r c:\rar\temp3\temp3.rar c:\rar\temp3\*.jpg c:\rar\temp3\
        if "%ERRORLEVEL%"=="0" ( Echo Files compressed
        ) Else Echo Failed
Pause

答案 3 :(得分:0)

此脚本也可以正常工作:

@echo off
for %%a in ("C:\rar\temp1" "C:\rar\temp2" "C:\rar\temp3") do (
    pushd "%%~a"
    "C:\Program Files\WinRAR\rar.exe" a -r temp.rar *
    popd
)