Wie kann ich für jeden Ordner in einem anderen Ordner eine ZIP-Datei erstellen?

Wie kann ich für jeden Ordner in einem anderen Ordner eine ZIP-Datei erstellen?

Unter dem Ordner images\habe ich die folgenden Ordner:

  • Usa\
  • Italy\
  • Japan\

usw..

Ich möchte ein Skript, das .zipfür jeden dieser Ordner ein erstellt, also habe ich usa.zip, italy.zip, japan.zip.

Wie kann ich das machen?

Antwort1

Sie könnenWinrardafür.

Wählen Sie alle Ihre Ordner aus, klicken Sie mit der rechten Maustaste und wählen Sie Add to archive. Wählen Sie nun die Option Put each file to separate archiveunter der Registerkarte Files:

Bildbeschreibung hier eingeben

Klicken Sie auf „OK“ und Sie sind fertig. Wenn Sie .zip-Dateien statt .rar-Dateien möchten, wählen Sie einfach ZIPdie GeneralRegisterkarte unter aus Archive format.

Antwort2

Ich gehe davon aus, dass es sich hierbei um Windows handelt, da Sie Backslashes verwenden.

ErhaltenHerunterladen(die Kommandozeilenversion von7-Reißverschluss) und legen Sie es in Ihr %PATH%.

Führen Sie dann Folgendes in Ihrem Images\Verzeichnis aus:

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

Oder in einem Batch-Skript:

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

Antwort3

Vorausgesetzt, Sie verwenden Linux, können Sie ein Bash-Skript wie das folgende verwenden:

  #!/bin/bash

  IFS=$'\n'

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

Dieses Skript verwendet das erste Argument als Ordner, in diesem Fall Bilder, und rekursiert genau eine Ebene tief, um alle Ihre Ordner (USA, Italien und Japan) zu erhalten und sie an derselben Stelle zu komprimieren.

Alte Zip-Dateien oder die Quellordner werden nicht gelöscht. Zip ist intelligent genug, um vorhandene Zip-Dateien zu erkennen und sie bei erneuter Ausführung zu aktualisieren. Wenn Sie jedoch eine Datei in den Quellordnern löschen,es wird nichtin den Zip-Dateien gelöscht werden. Sie können dieses Verhalten umgehen, indem Sie vorhandene Dateien vorher löschen.

Antwort4

DasAntwortvonMvGhat bei mir unter Ubuntu funktioniert:

Sie können diese Schleife in folgenden Bereichen verwenden bash:

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

iist der Name der Schleifenvariable. */bedeutet jedes Unterverzeichnis des aktuellen Verzeichnisses und enthält in diesen Namen einen abschließenden Schrägstrich. Stellen Sie sicher, dass Sie cdan der richtigen Stelle sind, bevor Sie dies ausführen. "$i"benennt einfach dieses Verzeichnis, einschließlich abschließendem Schrägstrich. Die Anführungszeichen stellen sicher, dass Leerzeichen im Verzeichnisnamen keine Probleme verursachen. ${i%/}ist wie, $iaber ohne abschließenden Schrägstrich, sodass Sie diesen verwenden können, um den Namen der ZIP-Datei zu konstruieren.

Wenn Sie sehen möchten, wie dies funktioniert, fügen Sie echovor dem ein ein zip . Anschließend werden die Befehle gedruckt und nicht ausgeführt.

verwandte Informationen