62

Packprogramm 7Zip in der Praxis

Meta

Erstellt: 12. September 2019
Modifiziert: 12. September 2019

Überblick

7-Zip ist ein beliebtes Allround Packproramm, dass mit vielen Formaten umgehen kann. Es enthält einen Dateimanager und Kommandozeilen (CLI) Programme.

7-Zip hat zwei Kommandozeilenprogramme:

  • 7z.exe
  • 7za.exe (a = alone)

7za hat mehr Möglichkeiten. Z.B. Dateien zusammen zu fügen (“combine”). Dieser Post handelt von CLI Beispielen in der Praxis. Der Aufruf des Programmes erfolgt ohne Pfadangabe, da ich alle zusätzlichen Programme (“Tools”) in einem Verzeichnis abgelegt habe, dass in der “Path” Angabe integriert ist.

Syntax

Der Aufruf des Programmes wird über “Function” und “Switches” gesteuert”. Switches sind das Feintuning. Switches werden mit einem Bindestrich angegeben, die Buchstaben der Funktion nicht. Das Programm 7z kennt folgende Parameter

Funktionen

  • a Add
  • d Delete
  • e Extract
  • h Calculate
  • l List
  • t Test
  • u Update
  • x eXtract with full paths

Einige Switches

  • -h “Help” zeigt Informationen zu den Parametern. Der einzige mir bekannte Switch der ohne Funktion verwendet werden kann.
  • -o[Verzeichnis] Verzeichnis in das die Dateien geschrieben werden
  • -p[Password] Zu setzendes Passwort
  • -y Rückfragen werden mit Ja (“Yes”) beantwortet

Beispiel 1

Die Dateien eines Verzeichnis wurde in ein Archiv bestehend aus 3 Dateien gepackt:

  • bsp.part1.rar
  • bsp.part2.rar
  • bsp.part3.rar

Nachfolgend verschiedene Möglichkeiten wie sie ausgepackt werden können

Variante 1

CMD

7z e bsp.part1.rar  

Der Inhalt der Archive wird in das lokale Verzeichnis (“WorkDir”) ausgepackt

7za e bsp.part1.rar  

Schlägt fehl. Fehlermeldung: “Can not open the file as archive”.

7z e -o"\kw19\" bsp.part1.rar  

Der Inhalt der Archive wird im lokalen Laufwerk im Root Unterverzeichnis \kw19 geschrieben

7za e -o"\kw19\" bsp.part1.rar  

Schlägt fehl. Fehlermeldung: “Can not open the file as archive”.

Beispiel 2

Die Dateien eines Verzeichnis wurde in ein Archiv bestehend aus 2 Dateien die auf 5 Dateien aufgesplittet wurden:

  • bsp.part1.rar.001
  • bsp.part2.rar.002
  • bsp.part3.rar.003
  • bsp1.part1.rar.001
  • bsp1.part2.rar.002

7e kann gesplittete Dateien nicht zusammensetzen. Fehlermeldung: “Can not open the file as archive”.

Mit 7za müssen zuerst die 2 gesplitteteten Dateien zusammen geführt (“combine”) werden.

7za e bsp.part1.rar.001  

oder mit einer Zielverzeichnis Angabe

7za e o"\kw19\" bsp.part1.rar.001  

7za erstellt aus den Datein 001 / 002 / 003 eine normales Archiv mit dem Dateinamen “bsp.part1.rar”. Danach mit dem zweiten Splitt (“bsp1.”) die Datei “bsp.part2.rar”. Diese können wie in Beispiel 1 als Archiv entpackt werden. Über den Befehl “For” kann innerhalb der Shell CMD auch eine grössere Anzahl Dateien in einem Durchgang entpackt werden.

Beispiel 3

Wie sieht es aus, wenn als Shell “Powershell” verwendet wird? Die Eingaben in den vorhergehenden Abschnitten funktionieren und führen zum gleichne Resultat. Natürlich muss für das lokale Verzeichnis der Prefix “." gesetzt werden. D.h. wenn ich eine Datei “bsp.part1.rar” im aktuellen Verzeichnis auspacken will, lautet der Befehl

7za e .\bsp.part1.rar  

Wenn mehrere Dateien ausgepackt werden sollen, dann sind die CMDLET von Powershell erheblich mächtiger als ein “For” Befehl der CMD Shell. Nachfolgend sollen alle RAR Dateien des aktuellen sowie der Unterverzeichnisse (“-Recurse”) ausgepackt werden. Jedes Archiv das über mehrere Dateien gepackt ist, beginnt i.d.R. mit einer Datei welche die am Schluss “part1.rar” hat. Davon ausgehend ergibt sich folgender Befehl:

Get-ChildItem -Recurse ".\*part1.rar" | ForEach-Object { 7z e $_ -o"$($_.Directory)\$($_.BaseName)" }

Wenn mit 7za mehrere gesplitte Archive zusammen (“combine”) geführt werden sollen, sieht die Eingabe so aus:

Get-ChildItem -Recurse ".\*.rar.001" | ForEach-Object { 7zA e $_ - }

Die ausgepackten RAR Dateien aus allen Unterverzeichnissen werden in das aktuelle Verzeichnis geschrieben. Wenn die gepackten Dateien in den Unterverzeichnissen identische Namen haben oder man aus anderen Gründen die Dateien in den jeweiligen Verzeichnissen lassen will, muss der Befehl ergänzt werden.

Get-ChildItem -Recurse ".\*.rar.001" | ForEach-Object { 7zA e $_ -o"$($_.Directory)"}

Für eine bitgenaue Kontrolle des Endresultates kennt das das 7-Zip Programm die Funktion “h”.

Fazit

Die Beispiele wurden während des schreibens mit 7-Zip Version 19 unter Windows 10 positiv getestet.

Quellen

Letzte Änderung September 9, 2019