Schrift
[thread]9070[/thread]

Verzeichnis öffnen und Dateien durchsuchen

Leser: 3


<< |< 1 2 >| >> 17 Einträge, 2 Seiten
yasukatakaya
 2007-06-06 12:39
#77294 #77294
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich wollte ein bestimmtes Verzeichnis öffnen und die Dateien, die dort liegen nacheinander öffnen und durchsuchen, danach diese unter anderem Namen dort oder auch wo anders abspeichern!!

Kann mir jemand helfen???

BITTTEEEE!
pq
 2007-06-06 12:48
#77295 #77295
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=yasukatakaya,06.06.2007, 10:39]Hallo,
ich wollte ein bestimmtes Verzeichnis öffnen und die Dateien, die dort liegen nacheinander öffnen und durchsuchen, danach diese unter anderem Namen dort oder auch wo anders abspeichern!!

Kann mir jemand helfen???

BITTTEEEE![/quote]
HALLO? GEHTS NOCH????1111!

du musst hier nicht anfangen, rumzuschreien. also unterlasse bitte in
zukunft sowohl im titel als auch im text worte grossbuchstaben.

ich werde den titel ändern.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
yasukatakaya
 2007-06-06 12:52
#77296 #77296
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
tut mir leid!:p :blush:
renee
 2007-06-06 12:59
#77297 #77297
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
opendir DIR, $verzeichnis or die $!;
while( my $entry = readdir DIR ){
    if( -f $entry ){
        # durchsuche datei
    }
}
closedir DIR;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Strat
 2007-06-06 13:17
#77298 #77298
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Quote
Code: (dl )
    if( -f $entry ){

opendir gibt nur den dateinamen zurueck ohne pfadangabe, also ueberprueft diese Zeile, ob es im aktuellen Verzeichnis eine Datei namens $entry gibt.

besser:
Code: (dl )
    if( -f "$verzeichnis/$entry" ){

oder sicherer:
Code: (dl )
1
2
3
4
5
6
7
8
9
use File::Spec;
opendir DIR, $verzeichnis or die $!;
while( my $entry = readdir DIR ){
my $filenameWithPath = File::Spec->catfile( $verzeichnis, $entry );
if( -f $filenameWithPath ){
# durchsuche datei
}
}
closedir DIR;
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
renee
 2007-06-06 13:22
#77299 #77299
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
richtig, hatte ich nur auf die schnelle hingetippt.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
yasukatakaya
 2007-06-06 13:26
#77300 #77300
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
Hallo,
danke für die schnelle Antworten, aber damit durchsuche ich doch bestimmte Dateien im Verzeichnis, und wenn es hundert von Dateien im Verzeichnis liegen und diese Dateien sollen nacheinander durchsucht werden, wie soll man es am besten machen?
Strat
 2007-06-06 13:31
#77301 #77301
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
-f ueberprueft, ob es sich um eine Datei handelt. also durchsuchst du alle Dateien im Verzeichnis, das du mit opendir geoeffnet hast, auch wenn es hundert oder tausend Dateien sind.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Ronnie
 2007-06-06 13:53
#77302 #77302
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Wie von strat und renee schon aufgeführt. Die Schleife klappert alle Dateien ab. Innerhalb der while-Schleife kannst du ein next unless $filenameWithPath =~ /Muster/; wenn der Dateiname einem bestimmten Muster entsprechen soll.
yasukatakaya
 2007-06-06 14:07
#77303 #77303
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
Hallo,
also ich will folgendes machen, das ist z.B. mein jetztiges Prog, dieses macht genaus das File auf, welches ich vorsagen z.B.
Code: (dl )
perl test.pl R0000378.CAP


R0000378.CAP ist meine Datei die durchsucht wird, nun sind viele Dateien unter diesem Verzeichnis, die so wie oben oder ähnliche Dateinamen haben, mit meinem Prog habe ich nur das aufgerufene Datei durchsucht, nun will ich aber alle Dateie unter einem Verzeichnis (dateien) durchsuchen:

hier ist z.B. mein prog:

Code: (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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
$quelle = $ARGV[0];
$x = $ARGV[0];
$x =~ s/(\w+)\.\w+/$1/;
$ziel = $x;

open ($INPUT,"<$quelle") or die "konnte $ziel nicht oeffnen,$!\n";

while ($line = <$INPUT>)
{
if ($line =~ /.CBT/gsm)
{
$cbt = 1;
}
elsif ($line =~ /BARCODE/gsm)
{
$barcode = 1;
}
elsif ($line =~ /AATHD000000.000/gsm)
{
$falscheangabe = 1;
}
elsif ($line =~ /PASS/)
{
$start_pos = tell($INPUT);
}
elsif ($line =~ /FAIL/)
{
$end_pos = tell($INPUT);
}
}

if ( $end_pos)
{
$status = '01';
$result = 'Failed';

seek($INPUT, $start_pos, 0);
$hit;

while ($line = <$INPUT>)
{

chomp($line);
last if $end_pos <= tell($INPUT);

if ($line =~ /^\z/)
{
$hit = 1;
}

if ($hit)
{
push @fehler, $line;
}
}

$fehler = join(' ', @fehler);
$fehler =~ s/\s+/ /g;


}
else
{
$status = '00';
$result = 'Passed';
}

close $INPUT;

if (($cbt != 1) || ($barcode != 1))
{
unlink ($quelle);
}
elsif ($falscheangabe == 1)
{
unlink ($quelle);
}
else
{
open (OUTPUT,">$ziel.txt") or die "konnte $ziel nicht oeffnen,$!\n";

print OUTPUT "{\@BATCH|$sachnummer||GOEPEL_BSCAN||KDSNR:$kundennummer|ICT||PB/PL_P|uqm161|||\n";
print OUTPUT "{\@BTEST|$seriennummer|$status|$starttest|||||n|n|$endetest||1|\n";
print OUTPUT "{\@RPT|$result}\n";
print OUTPUT "{\@RPT|$fehler}\n" if $fehler;
close OUTPUT;
}



Danke im Voraus!
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2007-06-06 12:39.