File.rename无法在Windows上运行

时间:2014-08-27 20:18:38

标签: ruby

以下是代码:

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上运行它。

1 个答案:

答案 0 :(得分:1)

目录结构 _05 / 01 似乎不存在。您需要首先使用FileUtils.mkdir_p创建目录,然后才能将文件移动到那里。