我正在尝试构建一个执行以下操作的服务:
- 如果在Finder中选择了某些文件夹/文件,请复制(全部)到剪贴板的路径
- 如果未选择任何内容,请复制窗口的“路径”。
从诸如此类的帖子中挖掘并获取灵感 将当前目录的路径复制到剪贴板 和MacYourself的 将文件或文件夹路径复制到Mac OS X Lion中的剪贴板 我已经达到了我可以获得选择路径的程度,但是如果选择为空,我在尝试获取当前窗口的路径时似乎陷入困境。
更新2013年12月13日。我得到了一些有用的反馈(见 https://apple.stackexchange.com/a/113612/7488 ;谢谢@Flavin)所以我已将代码更新为以下代码:
on run {input, parameters}
set l to {}
tell application "Finder"
set sel to (get selection)
if not sel = {} then -- there are some file/folders selected
repeat with f in (get selection)
set end of l to POSIX path of (f as alias)
end repeat
else --no stuff is selected, get the current location path
set end of l to POSIX path of (insertion location as alias)
end if
end tell
set text item delimiters to linefeed
set the clipboard to (l as text)
end run
逻辑似乎很可靠,只要我在Finder中选择了“某些东西”,它就会起作用。
我怀疑当没有选择时,服务可能不是“活动”(也就是说,当所需的结果是将当前路径复制到剪贴板时)。
在这种情况下,Finder窗口如此出现:
但尝试激活服务会显示“空”服务列表:
当我选择了某些内容时,将填充“服务”列表:
我定义的“复制文件路径”与“服务首选项”中的“文件和文件夹”相关联 - 可能是什么问题?