Datei kopieren

dark_ghost

Erfahrenes Mitglied
Hi,

ja ich schon wieder :(, sry aber ich muss euch nochmal was fragen.

Ein verzeichnis wird Zeilenweise eingelesen, die aktuell eingelesene Zeile steht auf $line.
Nun möchte ich $line umbenennen und in einen Ordner eine Ebene tiefer kopieren.

Eigentlich simpel nur leider die ganze Sache bei mir nicht.
Hier der Codeausschnitt:

Code:
#Verzeichnis zeilenweise einlesen
        foreach my $line (readdir (DIR) )
        {
            $linecounter++;
            
            #Folgendes muss im Dateinamen enthalten sein:
            #$art->RG/LS | $rechnr_von->gesuchte Nr. | $datum_von->gesuchtes datum
            if ( ($line =~ /[$art]/) && ($line =~ /($rechnr_von)/) && ($line =~ /($datumVon)/) )
            {
                $hitcounter++;            
                
                #An dieser Stelle möchte ich die Datei umbenennen und kopieren
                
                print $cgi->header(),
                $cgi->start_html('|-Verarbeitung-|'),
                $cgi->b("$hitcounter) "),
                $cgi->a({-href =>"http://lnxmt01:12345/archiv/$line", type =>'application/adobereader'}, "$line<br>"),
                $cgi->end_html();
            }            
            #Entspricht die Datei nicht den Suchkriterien wird weitergesucht
            else
            {
                next;
            }
            
        }#foreach

Ich hoffe ihr könnt mir auch diesmal wieder aus der "klemme" helfen ;)
Danke!
 
Zuletzt bearbeitet:
Ich weiß nicht genau ob du das meinst:
Code:
use File::Copy;

copy ($oldfile, $newfile);

Wenn du den Ordner von $oldfile kennst, dann müsste folgendes funktionieren:
Code:
my $newfile = "$oldfile_dir/../$newfile_name";

Ansonsten kannst du den Ordner über Regularexpressions rausbekommen.
 
Hi there,

ich hab das ganze jetz nach 2 Tagen endlich rausbekommen warum ich nicht kopieren konnte.
-> Falscher Benutzer (der Ordner "Archiv" gehört meinem User, jetz gehört er wwwrun und es läuft) *an stirn schlag* :rolleyes:

Code:
#Wenn das Archiv erfolgreich geöffnet wurde
    while (my $filename = readdir DIR)
    {
        my $old_file = $archivpfad . '/' . $filename;
        my $new_file = $old_file;
        $new_file =~ s/#/_/g;
        print $cgi->header(),
        $cgi->start_html(),
        $cgi->b("Versuche die Datei $old_file nach $new_file umzubenennen<br>"),
        $cgi->end_html();
        if ($old_file ne $new_file)
        {
            #copy($old, $new_files) or die "Copy failed: $!";
            my $exitstate = move($old_file, $new_file);
            print $cgi->header(),
            $cgi->start_html(),
            $cgi->b("Ergebnis: $exitstate<br>"),
            $cgi->end_html();
        }
        else
        {
            print $cgi->header(),
            $cgi->start_html(),
            $cgi->b("Fehler beim Umbenennen<br>"),
            $cgi->end_html();
        }
    }
    #SchlieÃen des Archives
    closedir DIR;

Danke an Alle (auch für die Antworten in den Vorangegangenen Fragen!)
Andreas
 

Neue Beiträge

Zurück