Thread File::Find Probleme (38 answers)
Opened by HeLLo1001W at 2012-11-27 11:10

HeLLo1001W
 2012-11-27 11:10
#163634 #163634
User since
2012-11-27
19 Artikel
BenutzerIn
[default_avatar]
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)

View full thread File::Find Probleme