Applescript -ドロップされたファイルのソート-
AppleScriptでドロップレットを作るとき、ドロップされたファイルのリスト、つまり
on open Drop_Files
end open
の Drop_Filesの中に入るアイテムの参照のリスト順は指定できない
つまり、ファイル名順に処理したい場合などは、on open で得たリストをいったんテキストにした後、shell 、perlやrubyなどでソートをかける必要がある…と思ってた。
勘違いだった。今日気がついた。
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でソートできるんだと気がついたので、結果オーライなのだけど。