「画像ファイルを作成日時でリネーム」
写真ファイルって撮影日時(作成日時)でリネームしとくと分かりやすい!
ということで簡単なrubyスクリプトを作成。
フォルダ・ファイルをドラッグ&ドロップで、フォルダ内のJPG・AVIファイルを全てリネームします。
なお Windows7 だとあれこれやってもスクリプトにドラッグ&ドロップできなかったので、Exerbで実行ファイル(exe)にもしてみました。
スクリプト:PhotoRenamer.rb
実行ファイル:PhotoRenamer.exe *1
Exerb用レシピ:PhotoRenamer.exy + Win32API.so
PhotoRenamer.rb
#! ruby -Ks #↑日本語モードにする #●説明メッセージボックス用 require 'Win32API' MessageBox = Win32API.new('user32', 'MessageBoxA', 'LPPI', 'I') message = "JPG・AVIファイルを、作成日時でリネームします。\n" message += "対象ファイル・フォルダをドラッグ&ドロップして下さい。\n" message += "フォルダ内のJPG・AVIファイルをすべてリネームします。\n\n" message += "例:" + Time.now.strftime("%Y-%m-%d_%H時%M分%S秒") + ".jpg" #●リネームする関数 my_rename の定義(引数は fileName ) def my_rename(fileName) name = File.mtime(fileName).strftime("%Y-%m-%d_%H時%M分%S秒") ext = fileName.sub(/^(.+)(\.[a-zA-Z0-9]+)$/, '\2') if ext.downcase != ".jpg" and ext.downcase != ".avi" print "対象外の拡張子のためスキップ\n" elsif FileTest.exist?(name+ext) print "同名ファイルが既にあるためスキップ\n" else File.rename(fileName, name+ext) end end #●ここからメイン #ファイルorフォルダをドラッグ&ドロップされたら if ARGV[0] != nil #カレントフォルダを変更 if File::ftype(ARGV[0]) == "directory" Dir::chdir(ARGV[0]) else Dir::chdir(File::dirname(ARGV[0])) end else MessageBox.call(0, message, "作成日付でリネーム", 0) exit end #カレントフォルダの中身を総ざらえ Dir::foreach('.') {|f| if FileTest.file?(f) my_rename(f) end }
PhotoRenamer.exy
general: startup: PhotoRenamer.rb core: gui kcode: sjis file: PhotoRenamer.rb: Win32API.so: file: Win32API.so
レシピファイルを使った実行ファイルの生成
Exerbをインストールした状態で以下のコマンドを実行するだけ。
なお今回は同じフォルダに Win32API.so が必要ですが、これはメッセージボックス表示用のライブラリで、本来はなくてもいいファイルです。
exerb PhotoRenamer.exy
*1:アイコンは特に意味も無くPS「Moon」の王様です。 http://weblog.ta2nb.main.jp/?eid=228653 からお借りしました!