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


18

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

  • Usa\
  • Italy\
  • Japan\

等等..

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

我怎样才能做到这一点?

Answers:


10

我假设这是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"

或在批处理脚本中:

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

如果文件夹名称中有空格,则此方法不起作用。
jiggunjer

@jiggunjer是的,您是对的。我已经修复它可以使用文件夹名称中的空格。
paradroid

1
即使使用普通的7zip可执行文件也可以使用。我将7za更新为“ C:\ Program Files \ 7-Zip \ 7z.exe”,并且没有问题。
user1324161

8

假设您使用的是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文件中将其删除。您可以通过事先删除现有文件来规避此行为。


我使用了sponiro发布的Linux脚本,并在开头添加了一行以删除文件夹:find $ 1 -type d | xargs rm -rf
创刊号

7

您可以为此使用Winrar

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

在此处输入图片说明

单击确定,完成。如果要.zip文件而不是.rar,只需ZIP在中的General标签中选择Archive format


0

答案MVG为我工作在Ubuntu:

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

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

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

如果要查看其工作原理, 请在echo前面加上,zip然后将看到打印的命令,而不是执行的命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.