在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路径,但这看起来非常麻烦和脆弱。
感谢您的帮助!
答案 0 :(得分:2)
在Python中,它是
app('Finder').selection.get(resulttype=k.alias)[0].path
我猜在Ruby中它会是
app('Finder').selection.get(:result_type=>:alias)[0].path