Automatorでファイル名を全角→半角にできますか?

全角で入力されている音楽ファイルの名前を半角に直したいのですが、当てはまる項目が見つけられませんでした。

そもそも出来ない操作であれば仕方ないのですが・・・

ご教授よろしくお願いします。

MacBook Air, OS X Mavericks (10.9.3)

投稿日 2014/07/11 20:07

返信
返信: 13

2014/07/11 20:46 手島史裕 への返信

こんにちは。


できますよ。 一番単純な方法なら下記。


ユーザがアップロードしたファイル

実行するとAABBCC.pdf が AABBCC.pdf になります。

これをA〜Zまで並べるとか。もっといい方法知ってる方、フォローお願いしますね。(^^;


ちなみにの今のフォントに全角とか半角という考えはそろそろやめたほうがよいかも。

ユニコードのプロポーショナル書体ですので。(1文字毎に幅が違います。まぁ等幅もありますが。)

(便宜的にuft8だと、1byte文字領域を半角文字と表現する場合はありますね。)

同様に 半角=1byte、全角=2byte という考え方も古いですので気を付けましょう。(Shift-JISのWindowsだけは未だにコレですが)


ではでは。

2014/07/14 01:33 手島史裕 への返信

失礼致します。 まず、Automatorのファイルメニューから新規作成を選択して、表示されるダイアログから『サービス』を選択します。

ユーザがアップロードしたファイル

次に、左の『アクション』>『ライブラリ』から、『ファイルとフォルダ』にある『ファインダー項目の名前を変更』アクションを選択して、右側のワークフローにドラッグ&ドロップします。 コピーを作るかどうか聞いてくるので、『今後このメッセージを表示しない』にチェックを入れて、『追加しない』を選択します。

ユーザがアップロードしたファイル

ユーザがアップロードしたファイル

右上のサービスが受け取る項目を『ファイルまたはフォルダ』、あるいは、『オーディオファイル』にして、検索対象を『Finder.app』にします。

『Finder項目の名前を変更』アクションで、『テキストを置き換える』を選択して、全角のAを検索文字列に入れ、半角のAを置換文字列にいれます。

そのアクションをコピー&ペーストしてBをいれて、同様に、Zまで26個追加するという作業になります。 ちょっと大変ですね。

小文字のアルファベットも置換する場合はさらに、26個のアクションを、全角の数字を半角に置換する場合は、さらに10個のアクションを追加することになります。 かなり面倒ですね。


サポートコミュニティの皆様、もっと簡単な方法がありましたら、ご教授下さい。宜しくお願い申し上げます。


(AppleScriptを使う方法もある様です。)

2014/07/14 02:36 お子様ランチ. への返信

自己レスです。


100曲程度なら上のを手作業でやれば終わっていたものを…基本、こんなのなんかプログラミング言語できないと面倒だよね…

さて、ただのアイディア倒れだけど、キモの変換部分だけを考えてみた。

ユーザがアップロードしたファイル

考え方は

AAAというファイル名を取得できたとして(そこまで考えてない…)

クリップボードにコピーして

テキストエディトにペーストする。

コマンド+Aを押して全てを選択

コマンド+Vでペースト

Type" "は”かなキー”の二度押しと↑キー2回で変換を選択

Press return(選択を決定)

Press retern


こんな感じです。けど、ちゃんと作らないと誤作動起こしそう…ただの参考まで。

2014/07/14 03:40 T22T への返信

こんな感じでどうでしょうか?(当方の環境は 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 でしょうか。

2014/07/14 01:31 亀どん への返信

ご教授ありがとうございます。


画像をご用意して頂けてとても分かりやすくて助かりました。

実際に行ってみたところ、数文字でなら変換されたのですが、全てのスペルを入力すると何も変わりませんでした。

結果も出て来ないです。


ちなみに私が入力したものは


検索文字列が


qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM


置換文字列


qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM


です。



再度ご教授お願いします。

2014/07/14 03:55 T22T への返信

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

2014/07/14 04:13 Hiro__S への返信

追記


iTunes 10 以降では AppleScript を実行後にメニューバー項目の一部がグレイアウトして、操作不能となることがあるバグがあります。この AppleScript を実行した後は iTunes を再起動した方がよいかもしれません。


iTunes は同じバージョンでも Snow Leopard と Lion 以降では挙動が異なるので、ほかの方の環境では大丈夫かもしれませんが一応追加情報です。

2014/08/09 16:30 Hiro__S への返信

半角カナ→全角カナの変換で濁点/半濁点が分離しないように修正しておきます。(本題からはちょっと逸れますが...)


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

2014/07/11 21:33 亀どん への返信

失礼致します。 AutomatorのWorkflowではなく、AutomatorのサービスにするとFinderから直接ファイルを選択して実行できるので、より便利だと思います。 サービスが受け取る項目は『ファイルまたはフォルダ』で、『検索対象』をFinder.appにするとよいと思います。

2014/07/14 01:02 T22T への返信

ご教授ありがとうございます。

Automatorのサービスにし、Finderから直接ファイルを選択して実行できてより便利。

サービスが受け取る項目は『ファイルまたはフォルダ』で、『検索対象』をFinder.appに

との事ですが、実際にしてみましたがよくわかりませんでした。


亀どんさんの様に画像があると理解できそうなので、お願い出来ますでしょうか?

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

Automatorでファイル名を全角→半角にできますか?

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。