こんにちは、デジタル事業本部の藤田です。
MacOS XはYosemite以降のOSであれば、複数のファイル名を変更することができます(参考:Macでファイル、フォルダ、およびディスクの名前を変更する)。右クリックで複数の項目の名前を変更することができるようになり大変便利になりました。
複数のファイル名を変更するツールはいままでもたくさんありましたが、Mac OS標準でできるようになったというのはありがたいことです。Yosemiteの登場以前は自作スクリプトでファイル名を処理しており、現在の作業環境もOS X Lionなのでまだまだ自作スクリプトが手放せません。今回はそんなYosemite以前のMac OSでも使うことができるファイル名変更スクリプトを紹介します。
● シンプルなツールをつくりたかった
複数のファイル名を変更するツールがたくさんあるといっても、どれもがあまり使い勝手のいいとはいえないものがほとんどでした。いろんな機能をつけなくても「検索置換」「追加」に特化していればいいのです。AppleScriptは複数ファイル処理が得意なのだし、ツールがなければつくってしまえばいいじゃない! というわけでスクリプト作成にかかりました。
● ファイル名を検索置換する
「ファイル名を検索置換する」スクリプトのコア部分にあたるコードはこんな記述をしています。
theFileがファイル、theFindStrが検索文字列、theChangeStrが置換文字列です。AppleScriptにはtext item delimitersというテキストを区切るプロパティがあります。このコードがどういった動作をするかというと…
例:abcabcabcabc.txtというファイル名の「c」を「_(アンダーバー)」にしたい。
abcabcabcabc.txt
↓
ab, ab, ab, ab, .txt (ファイル名を「c」で区切る)
↓
ab_ab_ab_ab_.txt (区切る文字を「_」にして結合する)
という動作になります。検索文字列でファイル名を分割し置換文字列を挟み込むという感じです。ファイル名から文字列を取得すると濁点・半濁点はサロゲートペア問題などがありますが、AppleScriptでは問題なく置換できます。
● ファイル名を追加する
「ファイル名を追加する」スクリプトのコア部分にあたるコードはこんな記述をしています。
theFileがファイル、theStringが追加したい文字列です。追加に関しては、ファイル名の先頭に付加するのは楽ですが、後ろに付加する場合は拡張子を考慮しなくてはいけません。このコードは拡張子を除いたファイル名の後ろに文字列を追加する仕組みになっています。どういった動作をするかというと…
例:abc.jpgというファイル名の後ろに「_0001」を追加したい。
abc.jpg
↓
gpj.cba (ファイル名テキストの順番を逆にする)
↓
「.(ピリオド)」の先頭からの文字位置を確認(4文字目)
↓
ピリオドの文字位置より「gpj.」と「cba」に分割
↓
abc_0001.jpg (テキストの順番を元に戻し、分割の間に「_0001」を入れる)
という動作になります。順番を逆にするのはoffsetコマンドが先頭からしか文字位置を確認できないためです。
● ファイルごとに処理
「ファイル名を検索置換する」「ファイル名を追加する」どちらのスクリプトもドロップレットなので複数のファイルをドラッグアンドドロップすることで、一括処理が可能となっています。
また、Excelなどのリストをもとに、ファイル名の変更を一括で処理→指定フォルダに移動するなどの処理もAppleScriptでは可能です。
このスクリプトはタクトシステムのHPで無料配布していますので、よろしかったらぜひダウンロードしてください。