0

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パスを作成できると思いますが、それは非常に面倒で脆弱なようです。

助けてくれてありがとう!

4

1 に答える 1

2

Python では、

app('Finder').selection.get(resulttype=k.alias)[0].path

Rubyではそうなると思います

app('Finder').selection.get(:result_type=>:alias)[0].path
于 2011-08-08T18:35:01.173 に答える