Font
[thread]7632[/thread]

Unterverzeichnisse prüfen auf Dateien

Readers: 2


<< >> 4 entries, 1 page
leissi
 2006-01-18 11:43
#62019 #62019
User since
2005-07-06
84 articles
BenutzerIn
[default_avatar]
Hallo,

will zu einer Subroutine ein verzeichnis mit Unterverzeichnissen prüfen auf aktuelle Dateien!
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
# 3 Block hier werden die Transactionlog-Dateien geprüft
 sub runSqlTrnCheck
   {
      #Überprüfung LogDatei-Verzeichnis
   
       
     
     # Flag, ob die Gesamtprüfung positiv ist.
     # 0 = nein, d.h. In mindestens einem Fall war keine aktuelle Backup-Datei vorhanden.
     # 1 = ja, d.h. es ware stets eine aktuelle Backup-Datei vorhanden.
          my $runSQLTrnCheck = "Ja";
         
          print LogDatei  '*' x 130, "\n\n";
          print LogDatei  '#' x 130, "\n";
          print LogDatei  '#' x 130, "\n\n";
          print LogDatei " TRN LOG-Verzeichnischeck beginnt: $tm \n\n\n";
          print LogDatei  '#' x 130, "\n\n";
         
     
          my $dir1 = '//sv040555.zitd.global.commerzbank.com//D$//Backup//MSSQL//TRN//ztb_treasurycockpit_db';
          opendir(DIR,$dir1) or die $!; # Verzeichnis "öffnen"
     
     
          my @verzeichnisse1 = grep{-M $dir1 .'/'.$_}readdir(DIR);
          my $bool = 0; #0 = Nein
          for my $file(@verzeichnisse1)
       
        {  
            if(existsGlobalCheck($dir1.'/'.$file,1))
            {
               $bool = 1;  #1 = Ja
               print LogDatei '-' x 130, "\n";
               print LogDatei "\n ----------------------------LOG Dateien vorhanden----------------------------- \n" . $bool . " LOG-Dateien gefunden!\n";
            print LogDatei $file . "\n \n" . @verzeichnisse1 . " LOG-Dateien (TRN) im Verzeichnis " . $dir1 . " vorhanden!";
            print LogDatei '-' x 130, "\n";
            }
          else
          {
             #print LogDatei "--------------------------------------------------------------------------\n";
             #print LogDatei " Aktuelle Datei ist nicht vorhanden!\n";
             #print LogDatei "--------------------------------------------------------------------------\n";
          }          
        }
          if ($bool == 1) # 1= Ja
          {
              print LogDatei '-' x 130, "\n";
              print LogDatei "INFO : Es besteht in dem Verzeichnis mind. eine aktuelle LOG-Dateien!\n";
              print LogDatei '-' x 130, "\n";
          }
        else      
        {
            print LogDatei '-' x 130, "\n";
            print LogDatei "ERROR: Es besteht in dem Verzeichnis keine aktuelle LOG-Dateien!\n";
            print LogDatei '-' x 130, "\n";
         }
           
            unless($runSQLTrnCheck)
         {
            print LogDatei '-' x 130, "\n";
            print LogDatei "ERROR: LOG-Dateien unvollständig !!!!!\n";
            print LogDatei '-' x 130, "\n";
            print LogDatei '#' x 130, "\n";
            print LogDatei '#' x 130, "\n\n\n";
         }
   }# End of: sub runSqlTrnCheck  
 
#***************************  
#Ende der Subroutinen  
#***************************  

Die Prüfung erfolgt auch nur leider explizit für ein Unterverzeichnis!

Gruss
Leissi\n\n

<!--EDIT|esskar|1137581005-->
J-jayz-Z
 2006-01-18 11:47
#62020 #62020
User since
2005-04-13
625 articles
BenutzerIn
[Homepage] [default_avatar]
Nutze doch File::Find, ist ganz einfach damit. Ansonsten solltest du mit einer rekursion arbeiten
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
leissi
 2006-01-18 11:58
#62021 #62021
User since
2005-07-06
84 articles
BenutzerIn
[default_avatar]
Hallo ,
File::Find habe ich im Script eingebaut aber ich bekomme nicht hin an der Stelle das er alle Unterverzeichnisse prüfen soll! Als Ergebnis wenn ich den File nur auf das Oberverzeichnis lege kommt keine aktuellen Dateien gefunden obwohl in den Unterverzeichnissen aktuelle Dateien vorhanden sind!

Gruss
format_c
 2006-01-18 13:09
#62022 #62022
User since
2003-08-04
1706 articles
HausmeisterIn
[Homepage] [default_avatar]
Ich muss zugeben man muss mal gesehen haben wie das mit File::Find und den Callbacks so läuft. Hab mich anfangs auch etwas schwer getan.
Hier mal ein kleines Beispiel.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use File::Find;

find(\&und_was_nu,'~/','/usr/bin');

sub und_was_nu {
    print "Datei: $File::Find::name\n"
    print "\tVerzeichnis: $File::Find::dir\n"
    print "\tDateiname: $_\n";

    return if -d $File::Find::name;#skip directories
    return unless $_ =~ m/\.mp3$/i;#only mp3 Files
    #Some Stuff
    
}


HTH

Gruß Alex\n\n

<!--EDIT|format_c|1137582658-->
<< >> 4 entries, 1 page



View all threads created 2006-01-18 11:43.