为什么这个ruby脚本无法执行?

时间:2016-04-17 18:43:34

标签: ruby windows

我有这个ruby脚本应该复制/重命名一组图像,但由于某种原因它不会工作。我对红宝石的体验很少,所以我想知道为什么它不起作用。

这是脚本。

tile_width = 256
tile_height = 256
image_width = 1024
image_height = 6144
n = 0
# To get this number, look at the number of tiles 
# generated, find the last tile number and add 1
# e.g. tiles_99.png => total_tiles = 100
total_tiles = 256 

tiles_per_column = image_width/tile_width

row = 0
column = 0
(n...total_tiles).each do |i|
  filename = "tiles_#{i}.png" # current filename
  target = "map_#{column}_#{row}.png" # new filename

  puts "copy #{filename} to #{target}" 

  `cp -f #{filename} #{target}` # rename

  # work out next step
  column = column + 1
  if column >= tiles_per_column
    column = 0
    row = row + 1
  end
end

这是返回的错误

copy tiles_0.png to map_0_0.png
script.rb:21:in ``': No such file or directory - cp -f tiles_0.png map_0_0.png (Errno::ENOENT)
        from script.rb:21:in `block in <main>'
        from script.rb:15:in `each'
        from script.rb:15:in `<main>'

这是我试图重命名/复制的图像

Screenshot of image folder

1 个答案:

答案 0 :(得分:1)

我假设您在Windows上运行,因此没有cp命令,请改用FileUtils::cp

将它放在文件的顶部: require 'fileutils'

删除第21行并改为使用此代码:FileUtils.cp(filename, target)

现在它应该工作:)