Ruby: Dir.glob gibt keine Dateien zurück

8

Ich versuche, Dateien aus einem Ordner in einen anderen Ordner zu kopieren und notiere dann die Namen aller Dateien, die in eine Protokolldatei kopiert wurden. Beide Ordner befinden sich im selben Verzeichnis und ich nehme diesen Pfad über die Befehlszeile. In meinem Programm passiert das momentan durch

%Vor%

wird erfolgreich zu "c: \ user \ alexander \ desktop \". Dann kopiere ich die Dateien auf meinem Desktop mit

in einen bereits auf dem Desktop befindlichen Ordner %Vor%

Dies schließt auch erfolgreich ab, was ich von der cmd-Ausgabe verifiziert und den Ordner selbst überprüft habe. Schließlich versuche ich die Dateinamen in einer Protokolldatei mit dem Pfad 'c: \ user \ alexander \ desktop \ log.txt' zu speichern. Ich habe versucht, dies mit

zu tun %Vor%

Das tut nichts und lässt meine logFile leer. Ich habe versucht, das zu beheben, indem ich die Option File.open auf 'w' anstelle von 'a' änderte, aber das tat immer noch nichts. Dann dachte ich, ich müsste es falsch implementieren, also versuchte ich einfach

%Vor%

als Plausibilitätsprüfung, aber dies gibt auch nichts aus. Ist das, was ich erreichen will, möglich? Wenn es ist, was mache ich falsch, und wenn es nicht ist, gibt es einen anderen Weg, dies zu tun?

Bearbeiten 1: Ändern des Dir.glob -Arguments in

%Vor%

schreibt die aktuellen Verzeichnisdateien in das Protokoll. Ich dachte, das bedeute, dass ich einen unsichtbaren Tippfehler in meiner Argumentationsvariablen haben müsste, aber wenn ich es tat,

%Vor%

es Ausgabe c: \ Benutzer \ Alexander \ Desktop * Ich habe versucht, den Dateipfad verketten, bevor ich es als Argument an Dir.glob als

übergeben %Vor%

Und es funktioniert immer noch nicht wie erwartet. Gibt es einen Trick, den genauen Dateipfad an Dir.glob zu übergeben? Ich kann nicht garantieren, dass sich das Programm immer in dem Verzeichnis befindet, aus dem es kopiert werden muss, wenn es ausgeführt wird.

    
Alexander Burke 18.12.2013, 20:16
quelle

3 Antworten

11

Dir.glob akzeptiert keine umgekehrten Schrägstriche. Ersetzen Sie sie für Schrägstriche, auch unter Windows:

%Vor%     
Matt 18.12.2013, 21:08
quelle
2

Dir.glob scheint nicht in der Lage zu sein, einen Dateipfad aufzunehmen, akzeptiert nur ein Muster von Dateien, nach denen im aktuellen Verzeichnis gesucht werden soll. Die Problemumgehung, die ich dafür habe, besteht darin, Dir.chdir zu verwenden, um zu dem Verzeichnis zu gelangen, das ich brauche, und dann Dir.glob (". ") zu verwenden, das die gewünschte Ausgabe erhält

    
Alexander Burke 18.12.2013 20:59
quelle
0

Probieren Sie einen Stern aus:

%Vor%     
Nick Veys 18.12.2013 20:26
quelle

Tags und Links