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
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
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
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.
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
Tags und Links ruby command-line directory