Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用Applescript根据当前选择更改查找器上下文菜单项的名称_Macos_Applescript_Contextmenu_Automator - Fatal编程技术网

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

Macos 使用Applescript根据当前选择更改查找器上下文菜单项的名称,macos,applescript,contextmenu,automator,Macos,Applescript,Contextmenu,Automator,编程时,我发现使用Finder浏览目录很方便。在过去,我经常发现自己需要一种简单的方法将所选文件的完整路径复制到粘贴板(剪贴板),这是Finder缺少的工具(从OSX v10.8.2开始)。因此,作为一名程序员,我添加了所需的功能,添加了一个Automator工作流,在Finder中右键单击所选文件时,会在文件上下文菜单中启动一个简单的Applescript 剧本写得很好!它增加了所需的功能,使用方便。然而,有一个行为我想添加到脚本中,但我还没有弄清楚如何做。启动工作流的Finder上下文菜单项

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

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

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


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

你不能。好吧,你可以,但这真的很恶心,可能不值得努力。菜单中显示的名称存储在工作流中的Info.plist文件中,因此理论上,您可以编写一个监视脚本,监视查找器选择并适当地旋转该文件,然后调用神奇的函数
nsUpdate DynamicServices()
,您需要AppleScriptObjC。(或者您可以杀死并重新启动Finder,但每次更改Finder选择时都这样做是不切实际的。)

一个有趣的增强请求是一种命名服务工作流的方法,该名称反映了选择,因此您可以命名您的工作流,比如说,“从%”复制路径,系统将自动替换为“foo.txt”或“5项”或其他内容


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

我怀疑查找程序在调用显示上下文菜单时以编程方式创建了复制菜单项。因此,将同时创建名称,并根据条件进行更改。