Thread File::Find Probleme
(38 answers)
Opened by HeLLo1001W at 2012-11-27 11:10
Hallo liebe Community,
seit Tagen probiere ich ein Skript auf die Beine zu stellen, was mir auf meiner externen Festplatte alle Unterordner ausliest. Dies geschieht alles mit File::Find. Doch leider kommen immer nur die Hauptordner und bei den Unterordnern Fehler wie "Can't cd to ... : No such file or directory" oder "Can't opendir ... : Invalid Argument". Der Fehler tritt vorallem immer bei $RECYCLE.BIN auf. (normalerweise ist $RECYCLE.BIN gefiltert) Ich habe das Skript mal über meine zweite Festplatte laufen lassen und da hat komischerweise alles funktioniert. Ach ja, bitte nicht wundern wegen den beiden Laufwerksbuchstaben. Dieses Skript soll später mal die beiden Laufwerke synchronisieren. Ich benutze Windows 7 Pro und Perl Strawberry 5.16. Ich hoffe, dass mir jemand helfen kann. HeLLo1001W Code (perl): (dl
)
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 54 55 56 57 58 59 60 61 62 63 #!/usr/bin/perl -w #Libaries use strict; use warnings; use Cwd; use File::Copy; use File::Find; #no warnings 'File::Find'; binmode(STDIN, ":encoding(cp437)"); binmode(STDOUT, ":encoding(cp437)"); #Variablendeklaration my $dat; my $ende = "A:/"; my $file; my $ordner; my $start = "K:/"; my $ziel; my @dat; my @dir; system('cls'); open(A, ">test2.log") || die "Konnte Datei nicht öffnen: $!"; find(\&wanted, $start); sub wanted { #$File::Find::no_chdir => 1; $file = $File::Find::name."/"; #Ordnerfilter if($file =~ /\$RECYCLE.BIN/) { $file = ""; } if($file =~ /Backups\/backup Ubuntu/) { $file = ""; } if($file =~ /System Volume Information/) { $file = ""; } if($file ne "") { push @dir, $file if (-d $file); } print A $file."\n"; } close(A); open(T, ">test.log") || die "Konnte Datei nicht öffnen: $!"; foreach $ordner(@dir) { print T $ordner."\n"; #$ziel = $ordner; #$ziel =~ s/$start/$ende/g; #chdir $ordner; #@dat = glob(); #foreach $dat(@dat) { #if(!-e $ziel) { mkdir $ziel; } #copy($ordner."/".$dat, $ziel.$dat); #} } close(T); Last edited: 2012-11-27 11:19:36 +0100 (CET) |