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:
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:
Das Auslesen klappt ja wunderbar, auch das Quellverzeichnis wird richtig ausgelesen.
Nur das kopieren funktioniert nicht .
Kann mir jemand helfen ?
Danke
BadFsaadKl
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 .
Kann mir jemand helfen ?
Danke
BadFsaadKl
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 213604
Url: https://administrator.de/contentid/213604
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
1 Kommentar
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.
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.