Automatorでファイル名を全角→半角にできますか?
全角で入力されている音楽ファイルの名前を半角に直したいのですが、当てはまる項目が見つけられませんでした。
そもそも出来ない操作であれば仕方ないのですが・・・
ご教授よろしくお願いします。
MacBook Air, OS X Mavericks (10.9.3)
全角で入力されている音楽ファイルの名前を半角に直したいのですが、当てはまる項目が見つけられませんでした。
そもそも出来ない操作であれば仕方ないのですが・・・
ご教授よろしくお願いします。
MacBook Air, OS X Mavericks (10.9.3)
こんにちは。
できますよ。 一番単純な方法なら下記。
実行するとAABBCC.pdf が AABBCC.pdf になります。
これをA〜Zまで並べるとか。もっといい方法知ってる方、フォローお願いしますね。(^^;
ちなみにの今のフォントに全角とか半角という考えはそろそろやめたほうがよいかも。
ユニコードのプロポーショナル書体ですので。(1文字毎に幅が違います。まぁ等幅もありますが。)
(便宜的にuft8だと、1byte文字領域を半角文字と表現する場合はありますね。)
同様に 半角=1byte、全角=2byte という考え方も古いですので気を付けましょう。(Shift-JISのWindowsだけは未だにコレですが)
ではでは。
失礼致します。 まず、Automatorのファイルメニューから新規作成を選択して、表示されるダイアログから『サービス』を選択します。
次に、左の『アクション』>『ライブラリ』から、『ファイルとフォルダ』にある『ファインダー項目の名前を変更』アクションを選択して、右側のワークフローにドラッグ&ドロップします。 コピーを作るかどうか聞いてくるので、『今後このメッセージを表示しない』にチェックを入れて、『追加しない』を選択します。
右上のサービスが受け取る項目を『ファイルまたはフォルダ』、あるいは、『オーディオファイル』にして、検索対象を『Finder.app』にします。
『Finder項目の名前を変更』アクションで、『テキストを置き換える』を選択して、全角のAを検索文字列に入れ、半角のAを置換文字列にいれます。
そのアクションをコピー&ペーストしてBをいれて、同様に、Zまで26個追加するという作業になります。 ちょっと大変ですね。
小文字のアルファベットも置換する場合はさらに、26個のアクションを、全角の数字を半角に置換する場合は、さらに10個のアクションを追加することになります。 かなり面倒ですね。
サポートコミュニティの皆様、もっと簡単な方法がありましたら、ご教授下さい。宜しくお願い申し上げます。
(AppleScriptを使う方法もある様です。)
こんな感じでどうでしょうか?(当方の環境は Snow Leopard なので、適宜変更してください)
コード
use strict;
use warnings;
use utf8;
use Encode;
use Unicode::Normalize;
use File::Basename;
for my $fpath (@ARGV) {
my ($fname, $dname, $ext) = fileparse($fpath, qr{\.[^\.]+$});
my $new_fname = decode('utf8', $fname);
$new_fname =~ s|(\p{InHalfwidth_And_Fullwidth_Forms})|NFKC($1)|ge;
$new_fname =~ s|[/:]|_|g;
$new_fname =~ s|^\.|_|;
$new_fname = encode('utf8', $new_fname);
my $new_fpath = $dname.$new_fname.$ext;
next if -f $new_fpath;
rename $fpath, $new_fpath;
# print $new_fpath, "\n";
}リネーム後のファイル名は次のようにしてあります。
・「/」と「:」は、「_」に置き換え
・先頭の「.」は「_」に置き換え
置き換え対象の文字列はユニコードの Halfwidth And Fullwidth Forms (U+FF00 から U+FFEF まで) ブロックです。
もっと範囲を絞って Fullwidth ASCII variants だけでよければ、下のように U+FF01 から U+FF5E までを指定。
$new_fname =~ s|([\x{FF01}-\x{FF5e}])|NFKC($1)|ge;全角英数字のみであれば、こんな感じ。
$new_fname =~ s|([\x{FF10}-\x{FF19}\x{FF21}-\x{FF3A}\x{FF41}-\x{FF5A}])|NFKC($1)|ge;ご参考
Unicode Utilities: UnicodeSet
http://unicode.org/cldr/utility/list-unicodeset.jsp?a=\p{Block=Halfwidth%20And%20Fullwidth%20Forms}
ーーーーー
ただ、iTunes に登録してあるファイルの場合は、この方法 (Finder からリネーム) ではなく、iTunes からリネームすべきかと。その場合は AppleScript でしょうか。
ご教授ありがとうございます。
画像をご用意して頂けてとても分かりやすくて助かりました。
実際に行ってみたところ、数文字でなら変換されたのですが、全てのスペルを入力すると何も変わりませんでした。
結果も出て来ないです。
ちなみに私が入力したものは
検索文字列が
qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM
置換文字列
qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM
です。
再度ご教授お願いします。
iTunes に登録してる場合は、AppleScript または Automator AppleScript (サービスではなく、ワークフロー形式) でこんな感じ。iTunes で選択した項目の曲名を変更します。
コード
on run
tell application "iTunes"
repeat with i in selection
set name of i to my NFKC(name of i)
end repeat
end tell
end run
on NFKC(str)
set exp to "s|(\\p{InHalfwidth_And_Fullwidth_Forms})|NFKC($1)|ge;"
--
set sh1 to "printf '%s' " & quoted form of str & " | "
set sh2 to "perl -CIO -Mutf8 -MUnicode::Normalize -pe " & quoted form of exp
--
do shell script (sh1 & sh2)
end NFKC追記
iTunes 10 以降では AppleScript を実行後にメニューバー項目の一部がグレイアウトして、操作不能となることがあるバグがあります。この AppleScript を実行した後は iTunes を再起動した方がよいかもしれません。
iTunes は同じバージョンでも Snow Leopard と Lion 以降では挙動が異なるので、ほかの方の環境では大丈夫かもしれませんが一応追加情報です。
半角カナ→全角カナの変換で濁点/半濁点が分離しないように修正しておきます。(本題からはちょっと逸れますが...)
on run
tell application "iTunes"
set ary to selection
repeat with i in ary
set name of i to my normalize(name of i)
end repeat
end tell
end run
on normalize(str)
set e01 to "s|(\\p{InHalfwidth_And_Fullwidth_Forms})|NFKC($1)|ge;"
set e02 to "s|(\\p{InKatakana}[\\x{309A}\\x{3099}])|NFC($1)|ge;"
set exp to e01 & e02
--
set sh1 to "printf '%s' " & quoted form of str & " | "
set sh2 to "perl -CIO -Mutf8 -MUnicode::Normalize -pe " & quoted form of exp
--
do shell script (sh1 & sh2)
end normalizeーーーーー
なお、下のようにすれば全角英数字→半角英数字のみの変換となります。
on normalize(str)
set exp to "s|([\\x{FF10}-\\x{FF19}\\x{FF21}-\\x{FF3A}\\x{FF41}-\\x{FF5A}])|NFKC($1)|ge; "
--
set sh1 to "printf '%s' " & quoted form of str & " | "
set sh2 to "perl -CIO -Mutf8 -MUnicode::Normalize -pe " & quoted form of exp
--
do shell script (sh1 & sh2)
end normalize失礼致します。 AutomatorのWorkflowではなく、AutomatorのサービスにするとFinderから直接ファイルを選択して実行できるので、より便利だと思います。 サービスが受け取る項目は『ファイルまたはフォルダ』で、『検索対象』をFinder.appにするとよいと思います。
ご教授ありがとうございます。
実は100曲以上あるのです。なのでAutomatorでの方法が知りたいのです。
ご教授ありがとうございます。
Automatorのサービスにし、Finderから直接ファイルを選択して実行できてより便利。
サービスが受け取る項目は『ファイルまたはフォルダ』で、『検索対象』をFinder.appに
との事ですが、実際にしてみましたがよくわかりませんでした。
亀どんさんの様に画像があると理解できそうなので、お願い出来ますでしょうか?
その音楽ファイルが既にiTunesに登録済みのものである場合、勝手にファイル名を変えてはいけません。iTunesにて変更してください。
(iTunesに登録しないものならこの返答は無視してください。)
Automatorでファイル名を全角→半角にできますか?