我試圖將文件從一個文件夾複製到另一個文件夾中,然後記錄複製到日誌文件中的所有文件的名稱。兩個文件夾都在同一個目錄中,我通過命令行獲取該路徑。在我目前發生的程序中,通過Ruby:Dir.glob沒有返回任何文件
argument3 = ARGV[2] + "\\"
它成功地成爲'c:\ user \ alexander \ desktop \'。 然後我將文件複製我的桌面上到一個文件夾已經在桌面上用
這也成功完成,這是我從CMD輸出和檢查文件夾本身驗證。最後,我試圖將文件名保存到路徑爲'c:\ user \ alexander \ desktop \ log.txt'的日誌文件中。我試圖通過使用
logFile = "c:\\user\\alexander\\desktop\\log.txt"
Dir.glob(argument3 + "*.*").each do |fileName|
File.open(logFile, 'a') {|file| file << "\n" + fileName}
end
這沒有做什麼,並使我的logFile
爲空。我試圖通過將File.open
選項更改爲'w'而不是'a'來解決此問題,但仍然沒有任何結果。然後我認爲我必須正確實施它,所以我試着把
Dir.glob(argument3 + "*.*").each do |fileName|
puts fileName
end
作爲一個完整性檢查,但是這也不會輸出任何內容。我正試圖完成什麼?如果是這樣,我做錯了什麼,如果不是有另一種方法來做到這一點?
編輯1: 更改Dir.glob
參數
Dir.glob("*")
正在成爲當前目錄下的文件寫入日誌。我想這意味着我必須有一些看不見的錯字在我的參數3變,但是當我做
puts argument3 + "*"
其輸出C:\用戶\亞歷山大\桌面*我試圖串聯的文件路徑之前,我通過它作爲參數傳遞給Dir.glob
as
filePath = argument3 + "*"
Dir.glob(argument3 + "*.*").each do |fileName|
File.open(logFile, 'a') {|file| file << "\n" + fileName}
end
它仍然沒有按照我的預期工作。是否有一些技巧將確切的文件路徑傳遞給Dir.glob
?我不能保證程序總是在它運行時需要複製的目錄中。
這應該工作 - 如果參數3關閉(我知道你的副本,例如工作),什麼是'把Dir.glob(「*」)to_s'輸出? – Matt
我放了'puts Dir.glob('*')。to_s',它返回了我當前目錄中的所有文件。在我的'.each do | fileName |'循環中放入Dir.glob('*')仍然不會輸出任何內容,但我也嘗試將'fileName.to_s'放入。有什麼我缺少關於'Dir.glob'如何工作? –
不,我不這麼認爲 - Dir.glob('*'){| f |放f''? – Matt