2016-04-17 12 views
-1

私は画像のセットをコピー/名前変更するはずのこのルビースクリプトを持っていますが、何らかの理由でうまく動作しません。ルビーの私の経験はほとんどないので、なぜそれが動作しないのだろうかと思います。なぜこのルビスクリプトは実行に失敗しますか?

ここにスクリプトがあります。

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

+0

ない理由は動作するはずです、今FileUtils.cp(filename, target)

は、ファイルの先頭にこれを置く: require 'fileutils'

削除ライン21、代わりにこのコードを置きますしかし、あなたがcygwinや他のUnixライクなユーティリティを実行しているのでなければ、エラーメッセージのように 'cp'というものはありません。 –

答えて

1

をコピーしているエラーですWindowsではcpコマンドを使用しないので、代わりにFileUtils::cpを使用してください。それはOSを呼び出すために:)

+0

それだけです!単にFileUtilsが必要で、 'FileUtils.cp filename、target'を実行すると私の問題が解決しました。ありがとう! –

関連する問題