使用Applescript根据当前选择更改Finder上下文菜单项的名称

时间:2013-03-12 07:23:28

标签: macos applescript contextmenu automator

编程时,我觉得使用Finder浏览目录很方便。在过去,我经常会发现自己想要一种简单的方法将所选文件或文件的完整路径复制到粘贴板(剪贴板),这是(从OSX v10.8.2开始)Finder缺乏的工具。因此,作为一名程序员,我通过添加Automator工作流添加了所需的功能,该工作流将简单的Applescript发布到在Finder中右键单击所选文件时出现的文件上下文菜单。

脚本效果很好!它增加了所需的功能,并且使用方便。但是,有一些我想添加到脚本中的行为,我还没有弄清楚如何做。启动工作流程的Finder上下文菜单项的名称是“复制文件名”,只有选择了一个文件但选择了多个文件时,我希望将名称菜单项更改为“复制文件名”或者“复制”+(所选文件的数量)+“文件名”。

所以我的问题是这样的:我如何使用Applescript动态设置文件上下文菜单中项目的名称,该菜单是在Finder中根据所选文件的数量右键单击所选文件时出现的吗

这种行为有一些先例。在Finder中复制所选文件时可以看到。如果只选择了一个文件,则上下文菜单中的复制菜单项将显示为复制“somefile.txt”,但如果选择了五个文件,则复制菜单项将显示为复制5个项目< / strong>即可。

1 个答案:

答案 0 :(得分:2)

你做不到。嗯,你可以,但它真的很糟糕,可能不值得努力。菜单中显示的名称存储在工作流内的Info.plist文件中,因此理论上您可以编写监视Finder选择的监视器脚本并适当地对该文件进行修改,然后调用魔术函数NSUpdateDynamicServices(),你需要AppleScriptObjC。 (或者你可以杀死并重新启动Finder,但是每当你改变Finder选择时这样做,我们会说是不切实际的。)

一个有趣的增强请求是一种命名服务工作流程的方法,以便名称反映选择,因此您可以命名工作流程,例如“从%复制路径”,系统将替换“foo.txt”或“ 5项“或你自动拥有什么。

值得注意的是,Finder确实在某种程度上完成了全部路径。尝试将文件拖动到纯文本文档中 - 您将获得路径。或者尝试复制并粘贴到终端,终端知道粘贴板上的“furl”味道。