ファイル名に入っている数値をインクリメントするスクリプトをRubyで。

@CyberMameCANです。
ファイル名に入っている数値をインクリメントするスクリプトをRubyの練習を兼ねて作ってみました。
無駄な処理をしていたりするかもですが、
いい練習になりました。

[ruby]
# -*- encoding: utf-8 -*-
#!/opt/local/bin/ruby
#
# ファイル名に入っている数値をインクリメントし、
# exchangeというフォルダの中に、
# 処理中のファイルを新ファイル名でリネームする。
#
# 条件:ファイル名には拡張子の前に3桁の数値が入っている
# ex) XXXXX123.jpg
#

FILE_EXT = ‘jpg’ # 拡張子
NUM_KETA = 3 # 拡張子の前の数値の桁数

# フォルダ中のJPGファイルに対して処理を行う
Dir::glob( Dir::pwd + ‘/*.’ + FILE_EXT ).each { |f|
# 初期化
back = [] # ファイル名退避用

dir, file = File::split( “#{f}” ) # ディレクトリとファイル名を分ける
# 旧ファイル名退避
back << file.dup # 参照渡ししない # ファイル名の後ろから処理するための準備 # ex) 5のマイナス 5 - 5×2 = -5 rnum_posi = File::extname( "#{f}" ).length - ( File::extname( "#{f}" ).length * 2 ) - NUM_KETA i = file[ rnum_posi, NUM_KETA ].to_i + 1 # ファイル名の後ろ側から指定バイト取得 file[ rnum_posi, NUM_KETA ] = i.to_s.rjust( NUM_KETA, '0' ) # 戻す(桁が足りない時は0を補充) # 新ファイル名退避 back << file.dup puts back[1] + ' <- ' + back[0] + 'リネームしました。' # ファイルリネーム File.rename( back[0], "exchange/" + back[1] ) } [/ruby]


出水市でWeb屋やってます。Webサイト作ったり、サーバ設定したりしている釣りの好きなMacユーザーです。 ドラクエ5のキラーパンサーにはゲレゲレと名付けました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください