
Ich habe eine ZIP-Datei results.zip
. Sie enthält zwei Ordner mit einer Reihe von ZIP-Dateien – PASS/test1.zip
, FAIL/test2.zip
, FAIL/test3.zip
.
Unter Linux ist das Entpacken in wenigen Schritten ganz einfach:
$ unzip results.zip
$ echo FAIL/*.zip PASS/*.zip | xargs -n1 unzip
Einige Windows-Benutzer beschweren sich, dass das Entpacken aller Dateien unter Windows mühsam ist. (Innerhalb der Haupt-ZIP-Datei befinden sich Dutzende von ZIP-Dateien.) Gibt es einen Mechanismus, mit dem sie den Inhalt aller Dateien auf einmal entpacken können?
Einige Kundenboxen sind neuer, aber viele verwenden immer noch WinXP.
Antwort1
Geben Sie ihnenunzip.exeund ein Batch-Skript wie
unzip results.zip
for %%i in (FAIL\*.zip PASS\*.zip) do unzip %%i
Antwort2
VersuchenJetzt extrahieren. Ich habe diese Funktion nicht selbst getestet, aber sie funktioniertbehaupten, es zu unterstützen.
Antwort3
Hier ist eine Lösung für Windows, vorausgesetzt, 7zip ist am Standardspeicherort installiert.
@echo off
Setlocal EnableDelayedExpansion
Set source=%1
Set SELF=%~dpnx0
For %%Z in (!source!) do (
set FILENAME=%%~nxZ
)
set FILENAME=%FILENAME:"=%
"%PROGRAMFILES%\7-zip\7z.exe" x -o* -y "%FILENAME%"
rem DEL "%FILENAME%"
For %%Z in (!source!) do (
set FILENAME=%%~nZ
)
for %%a in (zip rar jar z bz2 gz gzip tgz tar lha iso wim cab rpm deb) do (
forfiles /P ^"%FILENAME%^" /S /M *.%%a /C "cmd /c if @isdir==FALSE \"%SELF%\" @path"
)
Dies wurde von hier übernommenhttps://social.technet.microsoft.com/Forums/ie/en-US/ccd7172b-85e3-4b4a-ad93-5902e0abd903/batch-file-extracting-all-files-from-nested-archives?forum=ITCG
Anmerkungen:
- Die einzige Möglichkeit, Variablen mit den ~-Modifikatoren zu ändern, ist die Verwendung einer Dummy-for..in-Schleife. Wenn es eine bessere Möglichkeit gibt, bearbeiten Sie sie bitte.
- ~nx ändert die Variable, sodass sie einen vollständigen Pfad+Dateinamen enthält.
- ~dpnx macht dasselbe mit %0, d. h., es ruft den vollständigen Pfad und Dateinamen des Skripts ab.
- -o* in der 7zip-Befehlszeile ermöglicht 7zip, Ordnernamen ohne die Erweiterung .zip zu erstellen, wie es beim Extrahieren mit einem Rechtsklick in der GUI der Fall ist.
- ~n ändert die Variable, sodass ein Dateiname ohne Erweiterung entsteht, d. h., die Endung .zip wird gelöscht.
- Beachten Sie, dass das Escape-Zeichen (für Anführungszeichen) in (Caretzeichen)
FORFILES /P
ist , während es für ist . Dadurch wird sichergestellt, dass Pfad- und Dateinamen mit Leerzeichen auch rekursiv problemlos verarbeitet werden.^
CMD /C
\
- Sie können das REM aus der DEL-Anweisung entfernen, wenn Sie möchten, dass die ZIP-Datei nach dem Entpacken gelöscht wird.
Antwort4
Sieh dir das an
http://www.softpedia.com/get/Compression-tools/Multi-Unpacker.shtml
"Verschachtelte Archivverwaltung (rekursives Extrahieren von Archiven, die in anderen Archiven gepackt waren)."
Betriebssystem: Windows 2K / XP / 2003 / Vista