OSX 10.6では、次のコードを使用して、Finderで現在選択されている各ファイルに対して何かを実行しました。
app('Finder').selection.get.each do |item|
url =CGI::unescape(item.URL.get)
puts url
do_pdf(url[16..-1])
end
(これはKeyboard Maestroによって起動されます)。これは完全に正常に機能しましたが、OSXLionでは動作が変わったようです。
selection.getは、引き続き正しい参照app('Finder')。selection.get [0] => app "/System/Library/CoreServices/Finder.app" disks ["Home"] folder ["stian"]folder[を返します。 "ダウンロード"]document_files["包括的な検査(1).doc"]
ただし、URL.getを使用して抽出しようとすると、奇妙な番号が表示されます。
app('Finder').selection.get[0].URL.get
=> "file:///.file/id=6637683.2924283"
上記の参照を取得して、POSIXパスをテキスト文字列(/ Home / stian / Downloads / Comprehensive Examination(1).doc)として取得するにはどうすればよいですか?
このように、リファレンス全体のテキストバージョンを取得できます。
app('Finder').selection.get[0].get.to_s
=> "app("/System/Library/CoreServices/Finder.app").disks["Home"].folders["stian"].folders["Downloads"].document_files["Comprehensive Examination (1).doc"]"
したがって、これを手動で解析してPOSIXパスを作成できると思いますが、それは非常に面倒で脆弱なようです。
助けてくれてありがとう!