以下是代码:
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上运行它。
答案 0 :(得分:1)
目录结构 _05 / 01 似乎不存在。您需要首先使用FileUtils.mkdir_p
创建目录,然后才能将文件移动到那里。