Packprogramme steuern

Packprogramme unter Windows

Packprogramme können von Scripts benutzt werden, um Dateien platzsparend zu sichern. Für drei Packprogramme sollen hier die Möglichkeiten dargestellt werden, um sie mit dem Windows Scripting Host einzusetzen:

  • FilZip (www.FilZip.com) ist ein freier und sehr komfortablert Packer, der frei für gewerblichen und privaten Einsatz ist (Stand: Version 3.02). FilZip kann viele Formate öffnen und packen. Das Erscheinungsbild erinnert mich an WinZip, doch seine Oberfläche kann man auch in eine an den Windows-Explorer angelehnte Darstellung ändern - das ist für die Durchsicht gepackter Verzeichnisstrukturen ideal.

  • PowerArchiver (www.powerarchiver.com) war bis zur inzwischen veralteten Version 6.11 kostenlos.

  • WinRAR (www.WinRAR.de) hat sich durch seine hervorragenden Packraten eingeführt und läßt sich im Vergleich mit den anderen Packprogrammen auch von einem Skript her am besten konfigurieren. WinRar ist Shareware.

  • WinZip (www.WinZIP.de) ist der Klassiker der Windows-Packprogramme, ist zuverlässig, hat aber leider auch ein bißchen Staub angesetzt. Mit den wenigen unterstützen Formaten ist man auch nicht immer optimal bedient und gerade im Vergleich zur Freeware PowerArchiver dürfte die Shareware WinZip kaum mehr Chancen auf dem Markt haben. Die Befehlszeilenschalter von WinZip werden in der Dokumentation nicht aufgeführt.

Natürlich gibt es noch viele andere Pack-Programme, die sich für den Aufruf aus Skripts eignen. Auf DOS-Packer habe ich aus praktischen Gründen verzichtet, denn warum soll man sich einen DOS-Packer installieren, wenn man für die Handarbeit ohnehin einen Packer für Windows nimmt ?
Andere, auf dem Markt erhältliche Packprogramme (z.B. die Windows-Versionen von PkZIP und ARJ) sind sicher gut, aber kaum verbreitet.

Wer packt am Besten ?

Wenn WinRAR mehrere ähnliche Dateien packen soll und die Optionen 'Solid Archive', 'Multimedia Compression', 'Dictionary Size/Wörterbuchgröße' 1024 kB und als Kompressionsmethode 'beste' gewählt wurde, dann verkleinert WinRAR am besten.

Bei einzelnen Dateien ist jedoch meist PowerArchiver am besten, wenn das Format CAB gewählt wird (es gibt zwei Unterformate, nämlich 'LZX' und 'MsZIP Type', aber das MicroSoft-Format ist erwartungsgemäß schlecht). Dieses CAB-Format wird übrigens auch von WinRAR und WinZIP geöffnet und entpackt - es gibt also keinen Grund, auf diese optimalen Packraten zu verzichten.

Ein typisches Problem ist allerdings, daß mit wachsender Packrate auch die Geschwindigkeit der Packprogramme in den Keller geht.

Der optimale Kompromiss

Während beim Einpacken höhere Packraten auch mehr Zeit benötigen, ist das Auspacken meist unabhängig von der Kompression - Ausnahme ist die 'Solid Archive' Option von WinRAR, weil hier über Dateigrenzen hinweg gepackt wird (ähnliche Dateien beanspruchen dadurch noch weniger Platz) und beim Auspacken erst einmal wieder alle Dateien entpackt werden müssen, um die vom Anwender gewünschte Datei herauszusuchen.

Praktisch kann das Packen die Verarbeitung sogar beschleunigen, wenn das Speichermedium, auf dem die gepackte Datei liegt, wesentlich langsamer ist, als der Entpacker. Typische Beispiele sind der Zugriff auf Bandlaufwerke oder WebServer via Internet.
Bei langsamen Festplatten, CD-ROMs einerseits und gut komprimierbaren Dateien (wie z.B. Log-Files von WebServern) kann sogar eine transparente Kompression für die Festplatte wie 'Stacker' oder Microsofts 'DoubleSpace'/'DriveSpace' einen Geschwindigkeitsvorteil bringen, wenn die Daten schneller entpackt werden können, als sie das Laufwerk liefert.

Hinweis:

Die Aussagen zu den Lizenzen entsprechen dem Stand der Erstellung dieses Artikels und sind ohne Gewähr. Für eigene Programme sollten die Lizenzbedingungen noch einmal in der aktuellsten Version überprüft werden.

Aufbau der Script-Zeile

Eine Script-Zeile für das Erstellen eines Archivs aus einer odere mehreren Dateien hat bei allen drei Packern prinzipiell den gleichen Aufbau:

  1. Die Zeile beginnt mit einem Run-Befehl des Shell-Objekts, z.B.

    Set ShellWSH = CreateObject("WScript.Shell")
    ...
    ShellWSH.Run ...
  2. Es folgt der vollständige Pfad des Packprogramms in doppelten Anführungszeichen:

     ... """C:\Programme\PowerArchiver\POWERARC.EXE"" ..."

    oder: 

     ... """C:\Programme\WinRAR\winrar.exe"" ..."

    oder: 

     ... """C:\Programme\WinZip\WinZip32.exe"" ..."

    Die hier angegebenen Pfade entsprechen den Vorschlägen der jeweiligen Installationsprogramme

  3. Anschließend verlangen die Programme nach den Optionen. In allen Fällen lautet die erste Option -a für das Einpacken plus einige weitere spezifische Schalter.

  4. Danach kommen Name und vollständiger Pfad des zu erstellenden Archivs in doppelten Anführungszeilen.

  5. Alle folgenden Dateinemen/Pfade werden in das Archiv gepackt. In der Regel kann die Liste beliebig lang sein.

  6. Durch Komma getrennt können noch zwei Optionen für den Run-Befehl angegeben werden, nämlich die Fenstergröße und, durch ein weiteres Komma getrennt, die Anweisung, ob das Skript warten soll, bis das Packprogramm fertig ist, oder ob das Skript parallel dazu weiterarbeiten darf.

Optionen für's Einpacken
Schalter PowerArchiver WinZip WinRAR

Einpacken von Dateien/Verzeichnissen

-a a

Maximale Kompression
Bei WinRAR läßt sich die Kompression mit drei Einstellungen verändern: -mm steht für die spezielle Multimedia-Kompression, -md1024 für die (derzeit) maximale Wörterbuchgröße und -m5 als allgemeine Kompressionseinstellung.

-c4 -ex -m5 -md1024 -mm

Mit Unterverzeichnissen packen

-s -r -p -r

Sicherungsinformationen speichern
Hilft bei Archivdefekten, wird aber nur von WinRAR geboten. Die Wiederherstellung ist hier beispielhaft mit -rr16 angegeben und kann bis auf -rr4096 erhöht werden.

   -rr16
Beispiele für Scripts

erstellen einer ZIP-datei aus dem Verzeichnis 'C:\Eigene Dateien' mit PowerArchiver:

PackProgramm =.Run "C:\Programme\_tools\Filzip\Filzip.exe -a -rp "
BackupDatei = "E:\Backup " & Right("00" & (Year(Date) mod 100), 2) BackupDatei = BackupDatei & "-" & Right("0" & Month(Date), 2) BackupDatei = BackupDatei & "-" & Right("0" & Day(Date), 2)
CreateObject("WScript.Shell").Run PackProgramm & " " & BackupDatei" & " " & "C:\Eigene Dateien", 4, True

Die Variable BackupDatei liefert einen Dateinamen, in dem Jahr, Monat und Tag des Backups in der Form 'Backup jj-mm-tt' erscheinen, so dass ältere Backup-Dateien nicht überschrieben werden und die Backups vom Windows-Explorer korrekt sortiert werden.

Um mit PowerArciver CAB-Archive zu erstellen, muß lediglich die Endung ".CAB" an den Namen der Backup-Datei angehängt werden. Die 4. Zeile wäre also so zu ergänzen:

BackupDatei = BackupDatei & "-" & Right("0" & Day(Date), 2) & ".CAB"


Um mehrere Dateien / Verzeichnisse zu packen, muß der Run-Befehl entsprechend erweitert werden. Im folgenden Beispiel werden die Ordner 'C:\Eigene Dateien', 'C:\Windows\Local Settings' und 'C:\Windows\Anwendungsdaten' gepackt.

PackProgramm = """C:\Tools\PowerArchiver\POWERARC.EXE"" -a -c4 -s "
BackupDatei = "E:\Backup " & Right("00" & (Year(Date) mod 100), 2) & "-" & Month(Date) & "-" & Day(Date)
CreateObject("WScript.Shell").Run PackProgramm & """" & BackupDatei """ ""C:\Eigene Dateien"" ""C:\Windows\Local Settings"" ""C:\Windows\Anwendungsdaten""", 4, True