如何为另一个文件夹中的每个文件夹创建一个 .zip 文件?

Jua*_*ude 19 zip

在文件夹下images\,我有以下文件夹:

  • Usa\
  • Italy\
  • Japan\

等等..

我想要一个.zip为每个文件夹创建一个的脚本,所以我有usa.zip, italy.zip, japan.zip.

我怎样才能做到这一点?

par*_*oid 11

我假设这是 Windows,因为您使用的是反斜杠。

获取7za.exe7-zip的命令行版本)并将其放入您的%PATH%.

然后在您的Images\目录中运行它:

for /f "tokens=* usebackq" %G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%~G.zip" "%~G"
Run Code Online (Sandbox Code Playgroud)

或者在批处理脚本中:

for /f "tokens=* usebackq" %%G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%%~G.zip" "%%~G"
Run Code Online (Sandbox Code Playgroud)

  • 这甚至适用于普通的 7zip 可执行文件。我将 7za 更新为“C:\Program Files\7-Zip\7z.exe”并且它没有问题。 (2认同)

nma*_*mat 9

为此,您可以使用Winrar

选择所有文件夹,右键单击并选择Add to archive。现在选择选项Put each file to separate archive卡下的选项Files

在此处输入图片说明

单击“确定”,您就完成了。如果您想要 .zip 文件而不是 .rar,只需ZIP在.zipGeneral下的选项卡中选择Archive format


小智 9

假设你在 Linux 上,你可以使用这样的 Bash 脚本:

  #!/bin/bash

  IFS=$'\n'

  for f in $(find "$1" -mindepth 1 -maxdepth 1 -type d ); do
    zip -r "$f" "$f"
  done
Run Code Online (Sandbox Code Playgroud)

该脚本将第一个参数作为文件夹,在本例中为图像,并递归一级深度以获取所有文件夹(美国、意大利和日本)并将它们压缩到同一位置。

它不会删除旧的 zip 文件或源文件夹。Zip 足够智能,可以检测现有的 zip 文件并在再次运行时更新它们。但是,如果您删除源文件夹中的文件,则 zip 文件中的文件不会被删除。您可以通过事先删除现有文件来规避此行为。