我在 Windows 7 机器上有一个深度嵌套的文件夹结构。Windows 拒绝删除目录,因为它们的名称太长。我想将所有子文件夹重命名为类似2
的东西,希望它足够短,可以删除。这是我的脚本:
@count = 0
Dir.glob("**/*") do |file| #find src files in current folder and all subfolders
if File.directory?(file)
File.rename(file, File.dirname(file) + File::SEPARATOR + "2")
@count += 1
end
end
puts @count
当脚本运行时,它不是重命名所有子目录,而是多更改一个子目录,每次逐渐深入一层。即,此时运行脚本的输出是:
C:\>renamer.rb
30
C:\>renamer.rb
31
C:\>renamer.rb
32
我对为什么会发生这种情况感到困惑,并希望有任何意见。
我采取了正确的方法吗?我假设 Ruby 的递归目录删除方法会失败。但是,当我尝试执行
require "FileUtils"
FileUtils.remove_dir ("2", force = true)
我得到错误
syntax error, unexpected ',', expecting ')'
FileUtils.remove_dir ("2", force = true)
^
syntax error, unexpected ')', expecting end-of-input
FileUtils.remove_dir ("2", force = true)
^