Unter dem Ordner images\
habe ich die folgenden Ordner:
Usa\
Italy\
Japan\
usw..
Ich möchte ein Skript, das .zip
fü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 archive
unter der Registerkarte Files
:
Klicken Sie auf „OK“ und Sie sind fertig. Wenn Sie .zip-Dateien statt .rar-Dateien möchten, wählen Sie einfach ZIP
die General
Registerkarte 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
i
ist 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 Siecd
an 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,$i
aber 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
echo
vor dem ein einzip
. Anschließend werden die Befehle gedruckt und nicht ausgeführt.