Durchsuchen von Verzeichnissen kein Recht
am 29.09.2006 07:09:55 von MaVoHallo,
ich suche auf einem Laufwerk alle Dateien mit dem Namen "dieseHier.txt"
und durchsuche den Inhalt. Ich scheitere an Verzeichnissen, bei denen
ich kein Leserecht habe :-(
Hier bricht das Skript ab. Es soll aber einfach ignorieren. Ich stehe
auf dem Schlauch.
Danke!!
MaVo
use warnings;
use strict;
# Module einbinden
use IO::Dir;
use IO::File;
my $path =3D 'c:/';
my $logfile =3D "SchreibMit.txt";
my $searchFile=3D"dieseHier.txt";
my $lengthFileName=3D length($searchFile);
our $log =3D new IO::File $logfile, "w"
or error("Kann Logdatei $logfile nicht oeffnen ($!)");
#my @files =3D listdir($path, qr#[/\\][^/\\]+\.txt?$#);
my @files =3D listdir($path, $searchFile);
my $unknown =3D "Unbekannt";
foreach my $file (@files)
{
# TXT-Datei öffnen
my $txt =3D new IO::File $file, "r"
or error("Kann Datei nicht öffnen");
# Datei einlesen
my $buf =3D "";
while (!eof($txt))
{
my $bbf =3D "";
read($txt, $bbf, 1024);
$buf .=3D $bbf;
}
# ACHTUNG-Datei schließen
close($txt);
my $raute;
if ($buf =3D~ /# Dokumenttyp:+ (\w*\s*\w*)/)
{
$raute =3D $1;
}
else
{
$raute =3D $unknown;
}
$file =3D~ s/(\\$searchFile)//;
print $log $file."\n"."\t"."Dokumenttyp: "."$raute";
if ($buf =3D~ /# verantwortlich:+ (\w*\s*\w*)/)
{
$raute =3D $1;
}
else
{
$raute =3D $unknown;
}
print $log "\t"."Verantwortlich: "."$raute";
if ($buf =3D~ /# Schutzklasse:+ (\w*\s*\w*)/)
{
$raute =3D $1;
}
else
{
$raute =3D $unknown;
}
print $log "\n"."\t"."Schutzklasse: "."$raute"."\n";
}
sub listdir
{
my $dir =3D shift or return;
my $regex =3D shift || undef;
my @files;
# my $canRead=3D1;
my $handle =3D new IO::Dir($dir)
or error("sub listdir; Kann Verzeichnis $dir nicht öffnen ($!)");
# or print "Kann Verzeichnis nicht öffnen ($!)";
# $handle =3D new IO::Dir($dir)
# or $canRead=3D0;
# if($canRead == 0)
# {
# next;
# }
while (my $file =3D $handle->read)
{
next if $file =3D~ /^\./ || $file =3D~ /_vti_cnf/;
push(@files, $dir."\\".$file);
}
my @newfiles;
foreach my $file (@files)
{
if (-d $file)
{
push(@newfiles, listdir($file, $regex));
}
else
{
next if defined $regex && $file !~ $regex;
push(@newfiles, $file);
}
}
return @newfiles;
}
sub error
{
print $log "Fehler in der Skriptausführung: @_\n";
close($log);
=09
exit(1);
}