用于压缩子目录的批处理文件

Түм*_*гал 4 windows compression 7zip batch-file winrar

我正在尝试编写一个批处理脚本,它将使用winrar或7-zip自动压缩子目录:

例:

 My Pictures
    Pics1 (Pics1.zip)
        File1.jpg
        File2.jpg
        File3.jpg
    Pics2 (Pics2.zip)
        File4.jpg
        File5.jpg
    Pics3 (Pics3.zip)
        File6.jpg
        File7.jpg
    ...
Run Code Online (Sandbox Code Playgroud)

我该如何编写脚本.

Sun*_*nny 5

(1)使用WinRAR:

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

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

假设,如果有多个子文件夹,C:\MyPictures并且您希望每个子文件夹在父文件夹中获得自己的.rar文件.

从批处理文件中,这适用于您:

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

说明....

  1. 它将在同一父文件夹中的父文件夹C:\ MyPictures下创建所有文件夹/子文件夹的.rar文件.

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

    • "a"命令添加到存档

    • "-r"开关递归子文件夹

    • "-u"开关.与"a"命令结合使用时,相当于"u"命令.添加新文件并更新存档中已有文件的旧版本

    • "-df"开关在将文件移动到存档后删除它们

如果要保留原始子文件夹,只需删除-df switch.

(2)使用7-Zip:

7-Zip是一个压缩比高的文件存档程序.7z.exe是7-Zip的命令行版本.7-Zip不使用系统通配符解析器,它不遵循古老的规则.意味着任何文件.7-Zip零食.匹配具有扩展名的任何文件的名称.要处理所有文件,必须使用*通配符.

在批处理文件中使用7zip命令行选项,下面适用于您:

@echo off
setlocal
for /d %%x in (C:\MyPictures\*.*) do "C:\Program Files\7-Zip\7z.exe" a -tzip "%%x.zip" "%%x\"
endlocal
exit
Run Code Online (Sandbox Code Playgroud)

哪里

  • - 存档或添加

  • -t存档类型