8 Stimmen

Wie behandelt man Dateinamen mit Leerzeichen?

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..)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X