im folgenden code habe ich ander ordner als test angegeben
#C:\Perl\bin\perl.exe use strict; use File::Find; use MP3::Info; use File::Copy; my $dir="C:\\Dokumente und Einstellungen\\Yannic\\Desktop\\cdex_151\\my music\\"; my $dirneu="C:\\ipod2\\"; print "$dir\n"; print "$dirneu\n"; my @files; my $art; my $tit; my $newfile; my $nr; my $alb; $nr = "0"; sub wanted { if (/\.mp3/) { push(@files,$File::Find::name); print "lol\n"; } } find(\&wanted,$dir); foreach (@files) { my $tag=get_mp3tag($_) or print "No TAG avaible!\n"; $art = "$tag->{ARTIST}"; $tit = "$tag->{TITLE}"; $alb = "$tag->{ALBUM}"; print "$dirneu\\$art\\$alb\\$art - $tit.mp3\n"; if (-e "$dirneu\\$art\\") { if (-e "$dirneu\\$art\\$alb\\") { $newfile= "$dirneu\\$art\\$alb\\$art - $tit.mp3"; copy($files[$nr], $newfile); } else { mkdir ("$dirneu\\$art\\$alb\\", 0777); $newfile= "$dirneu\\$art\\$alb\\$art - $tit.mp3"; copy($files[$nr], $newfile); } } else { mkdir ("$dirneu\\$art\\", 0777); mkdir ("$dirneu\\$art\\$alb\\", 0777); $newfile= "$dirneu\\$art\\$alb\\$art - $tit.mp3"; copy($files[$nr], $newfile); } print "$files[$nr] kopiert nach $newfile\n"; $nr = $nr + 1; } print "$nr Dateien kopiert!";
das ganze funktioniert auch ganz ordentlich, bis auf das kleine problem, dass dateien bei denen ein ' vor dem ".mp3" kommt nicht beachtet werden und welche mit einem _ im namen so weit ich des überblicke auch nicht