下面的代碼:File.rename不工作在Windows
files = Dir.glob("*")
files.each do |file|
if File.extname(file) == ".pdf"
format = file.split(".pdf")
format = format.join("").split(" ")
format[0] = format[0].gsub(".","/")
format[0] << "_"
format[0].prepend("_")
format[-1] << ".pdf"
format = format.join("")
puts "Changed #{file} to #{format}"
File.rename(file,format)
end
end
它是從同一個目錄中的文件運行。我試圖給File.rename
參數絕對路徑,通過追加Dir.pwd
的結果給他們。代碼不是很乾淨,因爲它是我真正快速提取的內容,請原諒。
我得到以下錯誤:
Changed 05.01.14 Mid-Day 1.pdf to _05/01/14_Mid-Day1.pdf
script.rb:12:in `rename': No such file or directory - (05.01.14 Mid-Day 1.pdf, _05/01/14_Mid-Day1.pdf) (Errno::ENOENT)
from script.rb:12:in `block in <main>'
from script.rb:2:in `each'
from script.rb:2:in `<main>'
如果我把File.exists?(file)
它回來爲真。我完全搞不清楚爲什麼這不起作用。
我在Windows上運行這個。
'format.join(「」)'寫得更好'format.join'。考慮把'gsub(「。」,「/」)寫成'tr('。','/')',因爲它更快。而且,不要重複分配給'format [0]',而是將該值賦給一個單獨的值,然後,當你完成時,返回'format [0]'。它不那麼令人困惑,而且速度更快。 – 2014-08-27 21:31:36
而且,當你尋求幫助時,如果你能夠清楚地提供一些輸入數據,例如你所看到的路徑,這將非常有幫助。因爲我們可以根據錯誤來彌補錯誤,這幾乎無助於我們的幫助。 – 2014-08-27 21:49:34