Extrahieren Sie eine bestimmte Datei aus einem Archiv mit 7-Zip über die Befehlszeile

34

Wenn ich zum Beispiel ein Archiv habe, some.zipdas eine oder mehrere Dateien enthält, wie kann ich mit 7-Zip unter Windows nur eine Datei (ich kenne den Namen der Datei) aus der Befehlszeile extrahieren ?

Kiesoo
quelle

Antworten:

32

Fügen Sie als Antwort auf die Antwort von surfasb am Ende ein -r-Flag hinzu, um erneut zu verfahren:

7z e [archive.zip] -o[outputdir] [fileFilter] -r

Unterstützung mehrerer Filter:

7z e [archive.zip] -o[outputdir] [fileFilter_1] [fileFilter_2] -r

Beispiel:

Befehlszeile für mehrere Filter:

7z e archive.zip -o outputdir *.xml *.dll -r

PS: Ich benutze 7za.exe anstelle von 7z.exe. Dies ist der eigentliche Befehl, den ich in meinem Skript verwende:

7za.exe x archive.zip -o outputdir *.xml *.pdb *.exe *.ocx *.dll -r
Zionyx
quelle
1
Wie kann ich mehrere Dateifilter hinzufügen, sagen .XMLund .zip? Entschuldigung, wenn ich diesen Thread entführe, wollte ich nur keine doppelte Frage hinzufügen.
Fr0zenFyr
1
Sollte in Ordnung sein, indem Sie die Filter durch Leerzeichen trennen. Siehe die bearbeitete Antwort oben. :)
Zionyx
Und wie extrahiere ich eine bestimmte Datei aus einem Archiv im Archiv? Nehmen wir an, die gesuchte Datei ist "MyFile.txt" in "SubArchive.zip" in "MainArchive.zip". Ist das möglich?
PeterCo
1
@PeterCo, ich denke der Befehl ist nur in der Lage SubArchive.zipaus dem MainArchive.zipin deinem Fall zu extrahieren . Möglicherweise führen Sie nach der ersten Extraktion einen Folgebefehl MyFile.txtaus, SubArchive.zipaus dem extrahiert werden soll.
Zionyx
13

Fügen Sie einfach den Dateinamen am Ende hinzu.

7z e [archive.zip]-o [Ausgabeverzeichnis] ​​[Dateifilter]

surfasb
quelle
1
Wie kann ich mehrere Dateifilter hinzufügen, sagen .XMLund .zip? Entschuldigung, wenn ich diesen Thread entführe, wollte ich nur keine doppelte Frage hinzufügen.
Fr0zenFyr
Es ist eine andere Frage @ Fr0zenFyr. Um zu verdeutlichen, dass es sich nicht um ein Duplikat handelt, können Sie auf diese Frage selbst verweisen und dann angeben, wie sich Ihre Frage unterscheidet.
music2myear
@ music2myear: Danke für die Klarstellung. Die von zionyx am häufigsten gewählte Antwort enthält bereits eine Lösung. Mein Kommentar ist über 2 Jahre alt, es ist also eine vernünftige Annahme, dass ich entweder die oben genannte Lösung verwendet habe oder bereits eine Frage gestellt und eine Antwort gefunden habe (übrigens, das war mein Fall). Mein gelöster Beitrag ist auf SO und der ursprüngliche Thread wurde erstellt, bevor mein Kommentar hier ist. Daher konnte ich keine Verknüpfung zu dieser Frage herstellen. :)
Fr0zenFyr
Hinweis: Fügen Sie, wie hier geschrieben, kein Leerzeichen zwischen -o und outputdir ein.
King's Jester
4

Wenn Sie sich die Manpage für 7z ansehen, werden Sie feststellen, dass der folgende Befehl zum Extrahieren einer Datei aus einem 7z-Archiv verwendet werden kann (obwohl die Verwendung von path in der Manpage fehlt):

7z x <archive> <path to file>

Beispiele:

7z x backup.7z *.html
7z x backup.7z folderwithin/myfile.html

Alternativ könnten Sie verwenden e.

Das Benutzerhandbuch für die Befehlszeilenversion enthält offenbar weitere Informationen zur tatsächlichen Verwendung.

Todd Partridge
quelle
2
Ist das der relative Pfad innerhalb des Archivs?
music2myear
Ja, "folderwithin" ist ein Ordner im Stammverzeichnis des Archivs.
King's Jester
1

Beachten Sie, dass 7zdie folgende Syntax verwendet wird (beachten Sie die Leerzeichen und Anführungszeichen um die "-oMy Folder"Option zum Festlegen des Namens des Ausgabeordners. Ich habe Stunden gebraucht, um das herauszufinden, da ich dies ursprünglich auf die falsche Weise getan habe: * -o "My Folder"*):

7z e "my zip.zip" "-oMy Folder" *.jpg "all of these.*" -r
Albert Marenčin
quelle