旧マックから新マックへの移行で何故かmp3ファイルがURIエンコードで文字化けしていたので、ruby のスクリプトでリネームしてみた。
rename_file.rb
require 'URI'
path = "mp3ファイルが入っているディレクトリのパス"
Dir.chdir(path)
Dir.open(path).each do |f|
begin
if File.rename(f, "#{URI.decode(f)}").zero?
puts "Change name #{URI.decode(f)}"
end
rescue SystemCallError
puts "Can't rename #{f} to #{URI.decode(f)}"
end
end
pathにはお使いのmp3が入っている絶対パスを書くと動きます。
一応エラーでリネーム操作が止まらないようにしておきました。
(追記:2016/02/26)このままだとファイル名に/ か\ が入ってるとリネームされないので、/ と\ を: に置換するコードを追記する
rename_file2.rb
require 'kconv'
require 'uri'
path = "mp3ファイルが入っているディレクトリのパス"
Dir.chdir(path)
Dir.open(path).each do |f|
renamed_name = "#{URI.decode(f).gsub(/\/|\\/,':')}"
begin
if File.rename(f, "#{renamed_name}").zero?
puts "Change name #{renamed_name} "
end
rescue SystemCallError
puts "Can't rename #{f} to #{renamed_name}"
end
end
##最後に
どなたか/ や\ のままrubyでリネームできる方法教えてください。