如何在OSX Lion中使用rb-appscript获取Finder中当前所选文件的路径

时间:2011-08-08 01:01:35

标签: osx-lion finder appscript rb-appscript

在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推出)。这完全没问题,但是在OSX Lion中,行为似乎已经发生了变化。

selection.get仍会返回正确的引用     应用程序( '搜索')。selection.get [0]     => app“/System/Library/CoreServices/Finder.app”disks [“Home”] folders [“stian”] folders [“Downloads”] document_files [“Comprehensive Examination(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路径,但这看起来非常麻烦和脆弱。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

在Python中,它是

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

我猜在Ruby中它会是

app('Finder').selection.get(:result_type=>:alias)[0].path