Ich verwende Perl unter Windows (Active Perl). Ich habe ein Perl-Programm, um die Dateien im aktuellen Ordner zu globieren, und verketten sie alle mit Dos Copy-Befehl von innerhalb mit system() aufgerufen...
Wenn ich die Datei ausführe, gibt es eine Fehlermeldung: "Das System kann die angegebene Datei nicht finden." Das hängt mit den Leerzeichen in meinen Dateinamen zusammen.
Dies ist der Perl-Code :-
@files = glob "*.mp3";
$outfile = 'final.mp3';
$firsttime = 1;
foreach (@files)
{
if($firsttime == 1)
{
@args = ('copy' ,"/b ","$_","+","$outfile", "$outfile");
system (@args);
#system("copy /b '$_'+$outfile $outfile");
$firsttime = 0;
}
else
{
@args = ('copy' ,"/b ","$outfile","+","$_", "$outfile");
system (@args);
#system("copy /b $outfile+'$_' $outfile");
}
}
glob gibt ein Array von Dateinamen in meinem aktuellen Ordner zurück. Diese Dateinamen haben Leerzeichen zwischen sich, also haben die Array-Elemente Leerzeichen zwischen sich. Wenn ich das System(...) verwenden, um meine Kopie-Befehl auf diese Array-Elemente mit "$_" wie oben gezeigt, es gibt Fehler wie oben.
Ich habe einige Möglichkeiten ausprobiert, wie ich das System(...) aufrufen kann, aber ohne Erfolg.
Das würde ich gerne wissen,
1] Wie kann ich dies bei Dateien, die Leerzeichen zwischen sich haben, mit dem obigen Code erreichen? Wie kann ich die Leerzeichen in den Dateinamen "entkommen".
2] Jede alternative Lösung in Perl, um das Gleiche zu erreichen. (Einfache willkommen..)