Meines Wissens gibt es außer winrar kein Kommandozeilentool zum Zippen von Dateien und Ordnern für Windows.
Im Rahmen eines kleineren Kundenauftrags habe ich aber genau so ein Tool zum Einsatz in Batchdateien für Windows benötigt.
Mit Perl ist so ein Tool sehr schnell geschrieben.
Man nehme Archive::Zip.
In der Source-Code Distribution (Archive-Zip-1.23.tar.gz) befinden sich im Ordner examples zahlreiche Beispiele zur Verwendung von Archive::Zip.
Das Beispielprogramm zip.pl aus dem examples Verzeichnis ist genau das gewünschte Tool.
zip.pl
#!/bin/perl -w
# Creates a zip file, adding the given directories and files.
# Usage:
# perl zip.pl zipfile.zip file [...]
use strict;
use Archive::Zip qw(:ERROR_CODES :CONSTANTS);
die "usage: $0 zipfile.zip file [...]\n"
if (scalar(@ARGV) < 2);
my $zipName = shift(@ARGV);
my $zip = Archive::Zip->new();
foreach my $memberName (map { glob } @ARGV)
{
if (-d $memberName )
{
warn "Can't add tree $memberName\n"
if $zip->addTree( $memberName, $memberName ) != AZ_OK;
}
else
{
$zip->addFile( $memberName )
or warn "Can't add file $memberName\n";
}
}
my $status = $zip->writeToFileNamed($zipName);
exit $status;
Anwendungsbeispiele:
Komplettes Verzeichnis zippen
perl zip.pl test.zip examples
oder auch
perl zip.pl test.zip examples/*
Einzelne Dateien zippen
perl zip.pl test.zip datei1.doc datei2.doc dateiN.doc
Siehe auch:
Hackszine.com: Command Line Zip for Windows
Kommentare:
Ich arbeite viel mit Perl unter Windows, aber als Command Line Zip möchte ich einen Blick auf Zip und UnZip von Info-ZIP empfehlen. Dennoch Danke für die Vorstellung des Moduls, einen Einsatz kann ich mir in einem anderem Kontext gut vorstellen.
Hallo Henning,
danke für den Hinweis auf Info-ZIP.
Da habe ich wohl etwas zu früh aufgehört zu googeln.
Thomas
Ich verwende für meine in perl geschriebenen release tools 7-zip.
Herbert Breunung
Kommentar veröffentlichen