badfsaadkl
Goto Top

Perl Files umbenennen anhand csv Datei

Moin zusammen,

Ich möchte anhand einer csv Datei Bilder von einem Ordner in einen anderen kopieren und dabei umbennen.

Als Quelle habe ich folgende csv:

4220;13072_shop_1
4219;13071_shop_1
4182;13033_shop_1

Die erste Spalte ist der alte Dateiname und in der 2ten Spalte ist der neue Dateiname.

Anbei mal meine Anfänge, welche erst mal nur die csv ausliest, und eigentlich die gefundenen Files von A nach B kopiert:

use warnings;
use File::Copy qw(copy);
use File::Spec;

my $inputfile = 'C:\Data\export\ergebnis_test.csv';  
my $search1 = 'C:\Data\export\Bilder\original_images_alt';  
my $target1 = 'C:\Data\export\Bilder\test';  

open (my $fh, '<', $inputfile) or die "Fehler beim oeffnen: $!";  

opendir my $dirh, $search1 or die $!;

while (<$fh>) {
    @field = split(/;/, $_);
    my @files = grep { ! /^\.\.?$/ } readdir $dirh;
    for my $filename (@files) {
        my $alt = File::Spec->catfile( $search1, $filename );
        if( $filename =~ $field ) {
            my $neu = File::Spec->catfile( $target1, $filename );
            copy $alt, $neu;
        print "$alt, $neu\n";  
        }
    }
closedir $dirh;
close $fh;

Das Auslesen klappt ja wunderbar, auch das Quellverzeichnis wird richtig ausgelesen.
Nur das kopieren funktioniert nicht face-sad.

Kann mir jemand helfen ?

Danke
BadFsaadKl

Content-ID: 213604

Url: https://administrator.de/contentid/213604

Ausgedruckt am: 22.11.2024 um 13:11 Uhr

Maveric
Maveric 07.08.2013 um 14:09:35 Uhr
Goto Top
Gibt drei Optionen so etwas abzusetzen.

System("code")

Variable xy = `code`

exec("code")

Ich denke sie sind fast selbsterklärend. 1 und 3 öffnen eine extra Shell für sich wobei exec dein Skript an der stelle beendet.
Variante 2 gibt die dir Option das Ergebnis in eine Variable zu schreiben. Für dich wäre also "System("xy") zu benutzten.