#!/usr/bin/perl use strict; use warnings; use File::Copy; # arbeiten mit Pfaden use File::Spec; my $strVerzeichnis = "Verzeichnis_A"; my $strAblageVer = "Verzeichnis_B"; # Aktueller Arbeits-Pfad my $VerzPfad = File::Spec->curdir(); # Pfad anpassen $strAblageVer=File::Spec->join($VerzPfad,$strAblageVer); unless(-d $strAblageVer) { die(qq#ERROR Directory "$strAblageVer" don't exists!\n#); } # alle ".zip" lesen my @zip_files=list_zip_files($strVerzeichnis); # exit wenn keine gefunden unless(@zip_files) { print "No ZipFiles foundn\nfertig\n"; exit(); } #zum Zielverzeichnis wechseln: chdir($strAblageVer) or die(qq#ERROR chdir "$strAblageVer" ($!)\n#); # Dateien kopeiren foreach my $name ( @zip_files ) { print "Extract: $name\n"; my $quell_file=File::Spec->join($strVerzeinis,$name); my $ziel_file=File::Spec->join($strAblageVer,$name); my $staus=copy($quell_pfad, $ziel_pfad); if($staus!=1) { warn(qq#WARNING Can't copy "$quell_file" => "$ziel_file" ($!)\n#); # rest der Schleife überspringen next(); } extract_zip($ziel_file); } print "\nfertig\n\n"; ########################################################### sub list_zip_files { my $dir=shift; unless(-d $dir) { warn(qq#WARNING Diectory "$dir" don't exsists!\n#); return (); } my @zip_list=(); if(open(my $dh, $dir)) { while(my $name=readdir($dh)) { next unless($name=~/\.zip$/); push(@zip_list, $name); } close($dh); } else { warn(qq#WARNING Can't open $dir ($!)\n#); } return @zip_list; } # entpackt die angegebene Datei im aktuellen Verzeichnis sub extract_zip { my $file=shift; unless(-f $file) { warn(qq#WARNING $file don't exists!\n#) return 0 } my $status=system("unzip", $file ); if($status!=0) { warn(qq#WARNING Can't extract "$ziel_file" ERRORCODE:($staus)\n#); } }