Befehlszeile 7Zip zum Extrahieren der Datei anhand des angegebenen Ergebnispfads

6786
SerG

Ist es möglich, 7Zip eine Datei nach Namen aus dem Archiv in den angegebenen vollständigen Pfad (einschließlich des neuen Dateinamens) extrahieren zu lassen?

Ich habe nur gefunden:

7zip e <archive> -o<resultDirectory> <filemask>

Aber ich brauche es nicht.

2
Was hast du ausprobiert und was hat nicht funktioniert? Maximus vor 10 Jahren 0
@ Maximus, ich habe versucht, in Google zu suchen und Handbücher zu lesen. Und ich habe die Schlussfolgerung gezogen, dass es keine Möglichkeit gibt, eine Datei aus einem Archiv zu extrahieren, so dass die Ergebnisdatei den Namen (nicht derselbe wie im Archiv) mit nur Befehlen von 7zip angegeben hätte. SerG vor 10 Jahren 0

1 Antwort auf die Frage

4
Axel Kemper

Sie können die -soOption verwenden, um die Daten stdoutin Ihre Zieldatei zu schreiben und umzuleiten:

Beispiel:

7z e -so xxxx.7z > yyy.txt 

Die Kommandozeilenhilfe der Version 9.22Beta:

7-Zip [64] 9.22 beta Copyright (c) 1999-2011 Igor Pavlov 2011-04-18  Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...] [<@listfiles...>]  <Commands> a: Add files to archive b: Benchmark d: Delete files from archive e: Extract files from archive (without using directory names) l: List contents of archive t: Test integrity of archive u: Update files to archive x: eXtract files with full paths <Switches> -ai[r[-|0]]{@listfile|!wildcard}: Include archives -ax[r[-|0]]{@listfile|!wildcard}: eXclude archives -bd: Disable percentage indicator -i[r[-|0]]{@listfile|!wildcard}: Include filenames -m: set compression Method -o: set Output directory -p: set Password -r[-|0]: Recurse subdirectories -scs: set charset for list files -sfx[]: Create SFX archive -si[]: read data from stdin -slt: show technical information for l (List) command -so: write data to stdout -ssc[-]: set sensitive case mode -ssw: compress shared files -t: Set type of archive -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]: Update options -v[b|k|m|g]: Create volumes -w[]: assign Work directory. Empty path means a temporary directory -x[r[-|0]]]{@listfile|!wildcard}: eXclude filenames -y: assume Yes on all queries 

Neuere Alpha-Versionen (9.30) erlauben es nicht, einen Zieldateinamen als direkten Parameter ohne Umleitung anzugeben.

Diese Methode führt auch zu einer Umleitung der gesamten Informationsausgabe und erfordert zusätzliche Filterung. Da ich 7Zip von c # (als stabilere Alternative zu ionischem DotNetZip) verwende, manipuliere ich einfach Ordner und Dateien, um mein Ziel zu erreichen. Ich habe auch schon irgendwo gesehen, dass es eine '-rn'-Option gibt, mit der eine Datei innerhalb des Archivs umbenannt werden kann, aber es heißt auch, dass es ein Leistungsproblem gibt. SerG vor 10 Jahren 0
Bist du sicher? Ich habe es aus einer cmd.exe-Box probiert und die resultierende Datei sieht gut aus. Es kann hilfreich sein, Kanal 2 (stderr) getrennt von stdout umzuleiten. Axel Kemper vor 10 Jahren 0
Ich bin mir nicht sicher, aber: [this] (http://superuser.com/questions/148498/7zip-how-to-extract-to-std-output). SerG vor 10 Jahren 0
Ja. Sie erhalten diese Fehlermeldung, wenn Sie einfach `-so` verwenden, ohne stdout tatsächlich in eine Datei umzuleiten. Sobald Sie jedoch "> yyy.txt" hinzufügen, funktioniert es einwandfrei. Das Aufrufen von 7z eingebettet aus c # ist etwas anderes als Ihre ursprüngliche Frage. Axel Kemper vor 10 Jahren 1