2008-01-28

危険.名前を変更して連続番号

Rubyで、はじめて仕事用のプログラムを作りました。
よく使うし、これはとても役に立ちます。
こうしたらいいとか、気の付いたことがあれば教えてください。

# 以下、プログラム(インデントは全角スペースなので、copyしてもエラーが出ます)

ipath = "px1600" #input path
name_h = "r1" #name header
count = 0

Dir.open(ipath).each{|file|
 if file =~ /(.*)\.(JPG|jpg)$/
  count += 1
  name_c = ("00" + count.to_s).slice(-2,2)
  File.rename(ipath + "/" + file, ipath + "/" + name_h + name_c + ".jpg")
 end
}

2008/1/31
 とても大きな問題がありました。ファイルが消失する場合があります。
 変更前と変更後に同じ名前があるとき、ファイルが消滅する可能性があります。
 実際、このプログラムを2回続けて実行すると、消失することがあります。
2008/1/31
 Dir.open(...).each{...} # 推測ですが、closeされないのではないか?
 Dir.open(...){|d| d.each{|f| ...}} # やっぱりこうかな?
 とにかく、ある程度、試用してから公表すべきだよね。
 とにかくうれしくて、ついつい、やってしまった。(後悔)
2008/2/10
 変換元と変換後のフォルダを別にすることにして解決

0 件のコメント: