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

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

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

  • Usa\
  • Italy\
  • Japan\

ETC..

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

我怎样才能做到这一点?

答案1

您可以使用温拉为了这。

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

在此处输入图片描述

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

答案2

我认为这是 Windows,因为您使用了反斜杠。

得到7za程序(命令行版本7-zip) 并将其放入您的%PATH%

然后在你的目录中运行此命令Images\

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

或者在批处理脚本中:

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

答案3

假设您使用的是 Linux,您可以使用如下 Bash 脚本:

  #!/bin/bash

  IFS=$'\n'

  for f in $(find "$1" -mindepth 1 -maxdepth 1 -type d ); do
    zip -r "$f" "$f"
  done

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

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

答案4

回答经过劍橋在 Ubuntu 上为我工作:

您可以在以下位置使用此循环bash

for i in */; do zip -r "${i%/}.zip" "$i"; done

i是循环变量的名称。*/表示当前目录的每个子目录,并将在这些名称中包含一个尾部斜杠。cd在执行此操作之前,请确保您到正确的位置。 "$i"只需命名该目录,包括尾部斜杠。引号确保目录名称中的空格不会造成麻烦。${i%/}类似于$i但删除了尾部斜杠,因此您可以使用它来构造 zip 文件的名称。

如果您想了解其工作原理,请在echo前面添加一个zip ,您将看到打印的命令而不是执行的命令。

相关内容