Wie komprimiere ich viele Zip-Dateien auf einem Laufwerk erneut?

Wie komprimiere ich viele Zip-Dateien auf einem Laufwerk erneut?

Auf meiner Festplatte befinden sich viele ZIP-Dateien mit Backups verschiedener Dinge. Sie wurden zu verschiedenen Zeitpunkten auf unterschiedliche und inkonsistente Weise komprimiert und viele davon verwenden nur minimale Komprimierungseinstellungen.

Gibt es eine Möglichkeit (vorzugsweise mit 7zip), alle ZIPs auf einem Laufwerk mit denselben (besten) Komprimierungseinstellungen erneut zu komprimieren?

Antwort1

Unten finden Sie ein Skript, das ich in der Vergangenheit für eine ähnliche Aufgabe mit 100% Erfolg verwendet habe. Es ist reines Batch-Skript mit7ZipHier können Sie das Quellverzeichnis explizit angeben. Es kann sich um einen Laufwerksbuchstaben oder einen Ordner handeln.

Dies ermöglicht Ihnen auch, explizit ein anfängliches temporäres Stammverzeichnis anzugeben und dann einen neuen Ordner darin zu erstellen, der dem Namen der Zip-Datei abzüglich der Zip-Erweiterung entspricht, und diesen dann zu entfernen, sobald die7ZipArchivierungsvorgänge für jede Zip-Datei abgeschlossen sind,Für /FDie Schleife iteriert und verarbeitet.

Skript

Sie legen einfach oben im Skript die Werte der Variablen Src=, ExtractDir=, und z7=auf die in Ihrer Umgebung erforderlichen Werte fest und der Rest funktioniert einfach.

Sie können angeben, was immer7Zip-KomprimierungsmethodenSie benötigen es am Ende des %z7% a ~Befehls direkt nach dem -aoaSchalter -aoa -m<method_parameters>für Ihre Anforderungen.

Um es jedoch als Batch-Skript auszuführen, speichern Sie die Logik in einemText dokumentauf Ihrem Desktop usw. als <something>.cmdaus dem TextdokumentDatei | speichernOptionen. Doppelklicken Sie nach dem Speichern einfach darauf, um die Logik auszuführen (oder klicken Sie mit der rechten Maustaste auf „Als Administrator ausführen“) und bestätigen Sie anschließend, dass die Dateien wie erwartet bearbeitet wurden.

@ECHO ON
SET Src=X:\
SET ExtractDir=%Src%\tmpExtract007
SET z7="C:\Program Files\7-Zip\7z.exe"

FOR /F "usebackq tokens=*" %%a IN (`DIR /S /B /A-D "%Src%\*.zip"`) DO (
    IF NOT EXIST "%ExtractDir%\%%~Na" MD "%ExtractDir%\%%~Na"
    ECHO A | %z7% e "%%~Fa" -o"%ExtractDir%\%%~Na" -r
    %z7% a "%%~Fa" "%ExtractDir%\%%~Na\*" -aoa
    RD /Q /S "%ExtractDir%\%%~Na"
)
PAUSE
EXIT

Beachten Sie bitte das ECHO A |vor dem %z7% e ~Befehl, um ihm mitzuteilen, dass alle vorhandenen Dateien im Ausgabeverzeichnis überschrieben werden sollen, anstatt darauf zu warten, dass Sie ihm dies mitteilen usw.

Bildbeschreibung hier eingeben

Beachten Sie auch die Verwendung des -aoaSchalters am Ende des %z7% a ~Befehls, der angibt, dass alle vorhandenen Dateien in der ZIP-Datei, die Sie komprimieren, überschrieben werden sollen, um alle darin enthaltenen Originaldateien zu ersetzen, ohne vorher die gesamte ursprüngliche ZIP-Datei zu löschen. Dies lässt sich bei Bedarf ganz einfach durch eine zusätzliche Zeile zu diesem Skript hinzufügen IF EXIST "%%~Fa" DEL /Q /F "%%~Fa".


Weitere Ressourcen

Antwort2

Hier ist ein einfaches Skript für die normale Eingabeaufforderung ( cmd.exe), das dies für Sie erledigen kann:

set ZIP7="C:\Program Files\7-Zip\7z.exe"

for %z in (*.zip) do (
    mkdir tmp
    cd tmp
    %ZIP7% x ..\%z
    %ZIP7% a ..\%z.7z -r -mx9 *
    cd ..
    rmdir /s /q tmp
)

Zuerst ZIP7wird die Variable mit dem Pfad zu definiert 7z.exe. Dannfordurchläuft alle Zip-Dateien im aktuellen Verzeichnis. Jede Zip-Datei wird in das tmpVerzeichnis extrahiert und dann mit 7-Zip bei maximaler Komprimierung ( -mx9Option) erneut komprimiert.

Sie können diese Befehle in eine Batchdatei einfügen. Verwenden Sie in diesem Fall double %in der forVariable -loop. Das heißt, verwenden Sie %%zanstelle von %z.

Antwort3

Die Freeware ReZip erledigt diese Aufgabe:zipada55-bin-win32.zip. Zunächst einmal rezip -comp -int archive.zipwird der Befehl auch ohne weitere Installation ganz gut funktionieren. Für eine noch bessere Komprimierung müssen Sie zip, 7z, kzip, advzip herunterladen und ReZip ohne diese -intOption ausführen. Der vollständige Satz der Befehlszeilenoptionen lautet:

Options:  -defl     : repack archive only with the Deflate
                        subformat (most compatible)
          -fast_dec : repack archive only with fast decompressing subformats
          -int      : use internal Zip-Ada algorithms only, no external call
          -touch    : set time stamps to now
          -lower    : set full file names to lower case
          -del_comm : delete comment
          -comp     : compare original and repacked archives (paranoid mode)
          -rs=n     : loop many times over a single compression approach
                        having randomization, and keep optimum when size is
                        stable after n attempts in a row

Antwort4

Schreiben Sie ein PowerShell-Skript, das alle ZIP-Dateien auf Ihrer Festplatte findet, für jedes gefundene ZIP-Archiv alle Dateien extrahiert und sie erneut im gewünschten Format komprimiert.

Sie können entweder integrierte ZIP-Funktionen verwenden oder die 7zip-Befehlszeilentools von PowerShell aus aufrufen.

verwandte Informationen