ちくちく日記

DTP系備忘録。真面目にやってます。

Applescript -ドロップされたファイルのソート-

AppleScriptでドロップレットを作るとき、ドロップされたファイルのリスト、つまり

on open Drop_Files
end open

Drop_Filesの中に入るアイテムの参照のリスト順は指定できない
つまり、ファイル名順に処理したい場合などは、on open で得たリストをいったんテキストにした後、shell 、perlrubyなどでソートをかける必要がある…と思ってた。

勘違いだった。今日気がついた。

on open Drop_Files
tell application "Finder"
set Drop_Files to sort Drop_Files by name--名前順
set Drop_Files to sort Drop_Files by physical size --サイズ順
set Drop_Files to sort Drop_Files by modification date--修正日順
set Drop_Files to sort Drop_Files by creation date--作成日順
end tell
end open

これで、ソートできるのね…。
Finderでソートできるのは、直接ファイルを指定した時だけだと思ってた。リストになってても大丈夫なのか。いままで遠回りしてたよ。

ところで、名前順でソートするとき、このFinderでソートするのと、リストをshell scriptでソートするのじゃ結果が違うんですね。
{"B12.eps" , "a123.eps" , "c123.eps" , "A12.eps" , "b123.eps"}
を名前順ソートしたとき、Finderが返す答えは
{"A12.eps" , "a123.eps" , "B12.eps" , "b123.eps" , "c123.eps"}
なのだけど、rubyやshell scriptでsortすると
{"A12.eps" , "B12.eps" , "a123.eps" , "b123.eps" , "c123.eps"}
になる。

つまりFinderは大文字と小文字を区別しないでソート、shellの方は区別してソート。

今回はFinderと同じ区別しないソート結果がほしかったのだけどshellで大文字小文字を区別せずソートさせるやり方がわからなかった。
それでごちょごちょFinderのリストをいじっているうちに、そんな(わざわざshell script呼ぶような)事しなくてもFinderでソートできるんだと気がついたので、結果オーライなのだけど。