1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
#!/usr/bin/perl -w use strict; use warnings; my $strVereichnis = "Verzeichnis_A"; my $strAblageVer = "Verzeichnis_B"; use Cwd; use File::Copy; # habe versucht mit Zip Module zu arbeiten, leider nicht hin bekommen :-( #use Archive::Zip; #use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); #use Compress::Raw::Zlib ; my $VerzPfad = cwd . '/'; # Verzeichnis Pfad ohne Dateinanem auslesen. # Auslesen aller zip Dateien, und NUR zip Dateien. my $result=opendir(DIR,$strVereichnis) || die $!; my @files = grep { /\.zip$/ } readdir(DIR); close DIR; # Nur kopieren foreach my $dateien ( @files ) { copy( $strVereichnis.'/'.$dateien, $strAblageVer.'/'.$dateien ); # Versuch im gleichem "Zug" die Dateien zu entpacken. #system("unzip", $VerzPfad.$strAblageVer.'/'.$dateien ); # Versuche mit Zip zu arbeiten :-( #my $zipName = shift($strAblageVer.'/'.$dateien ); #my $status = $zip->read( $strAblageVer.'/'.$dateien ); } print "\nKopierne fertig\n\n"; # Ab hier schlägt alles fehl. system("cd $VerzPfad.$strAblageVer"); # unzip "geht" nicht ins Verzeichnis_B, sondern entpackt die Dateien, ein Verzeichnis höher, # auf gleiche Ebne, auf der das Script ausgeführt wird. foreach my $dateien ( @files ) { # Zum testen den Verzeichnis Pfad ausgeben: print "::: ".$VerzPfad.$strAblageVer.'/'.$dateien."\n"; system("unzip", $VerzPfad.$strAblageVer.'/'.$dateien ); } print "\nfertig\n\n";
system("unzip", $VerzPfad.$strAblageVer.'/'.$dateien) == 0 or die "system failed: $?"
system("/usr/bin/unzip", $VerzPfad.$strAblageVer.'/'.$dateien) == 0 or die "system failed: $?"
2011-10-24T11:07:37 karl34Das kopieren klappt es, das entpacken nicht :-(
Mein Script sieht folgend aus:
[code=perl]
[.......]
# Ab hier schlägt alles fehl.
system("cd $VerzPfad.$strAblageVer");
# unzip "geht" nicht ins Verzeichnis_B, sondern entpackt die Dateien, ein Verzeichnis höher,
# auf gleiche Ebne, auf der das Script ausgeführt wird.
"$VerzPfad.$strAblageVer"
1 2 3 4 5 6 7 8
#zum Zielverzeichnis wechseln: chdir($VerzPfad.$strAblageVer) or die(qq#ERROR chdir "$strAblageVer" ($!)\n#); foreach my $dateien ( @files ) { print "::: ".$VerzPfad.$strAblageVer.'/'.$dateien."\n"; system("/usr/bin/unzip", -d, $VerzPfad.$strAblageVer.'/'.$dateien ) == 0 or die "system failed: $?" }
1 2 3 4 5 6 7 8 9
Das Verzeichnis Verzeichnis_A auslesen: Kopierne fertig ::: /home/user/perl/entpacken/Verzeichnis_B/datei1.zip Use of uninitialized value $_ in -d at ./mein_erste_script.sh line 49. Use of uninitialized value in system at ./mein_erste_script.sh line 49. unzip: cannot find or open , .zip or .ZIP. system failed: 2304 at ./mein_erste_script.sh line 49.
> Use of uninitialized value $_ in
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
#!/usr/bin/perl -w use strict; use warnings; my $strVereichnis = "Verzeichnis_A"; my $strAblageVer = "Verzeichnis_B"; use Cwd; use File::Copy; # habe versucht mit Zip Module zu arbeiten, leider nicht hin bekommen :-( #use Archive::Zip; #use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); #use Compress::Raw::Zlib ; my $VerzPfad = cwd . '/'; # Verzeichnis Pfad ohne Dateinanem auslesen. # Auslesen aller zip Dateien, und NUR zip Dateien. my $result=opendir(DIR,$strVereichnis) || die $!; my @files = grep { /\.zip$/ } readdir(DIR); close DIR; # Nur kopieren foreach my $dateien ( @files ) { copy( $strVereichnis.'/'.$dateien, $strAblageVer.'/'.$dateien ); # Versuch im gleichem "Zug" die Dateien zu entpacken. #system("unzip", $VerzPfad.$strAblageVer.'/'.$dateien ); # Versuche mit Zip zu arbeiten :-( #my $zipName = shift($strAblageVer.'/'.$dateien ); #my $status = $zip->read( $strAblageVer.'/'.$dateien ); } print "\nKopierne fertig\n\n"; chdir($VerzPfad.$strAblageVer) or die(qq#ERROR chdir "$VerzPfad.$strAblageVer" ($!)\n#); foreach my $dateien ( @files ) { # entpacken system("/usr/bin/unzip", $VerzPfad.$strAblageVer.'/'.$dateien ) == 0 or die "system Fehler: $?"; # die Zip Dateien löschen unlink( $VerzPfad.$strAblageVer.'/'.$dateien ); } print "\nfertig!\n\n";