我偶尔会写一些方便操作的小脚本,统一放置到/usr/local/script/目录,为了防止忘记,该目录还有一个readme文件,记录了每个脚本的源码位置和简短描述
几乎每个脚本都是在命令行里面执行的,今天心血来潮,是否能很方便的将脚本移植到文件管理器的右键点击菜单栏那里。摸索了一番还挺简单。记录一下,主要是使用Automator完成。
- 打开Automator -> File -> New -> 选择Quick Action
- 选择 files or folders和Finder,在左侧搜索Run Shell Script,输入如下代码
1 2 3 4
| for f in "$@" do /usr/local/script/srt2txt "$f" done
|
- File -> Save
至此,基本上就可以了。在Finder中选择文件,右键,或者你打开预览,就可以了看到你添加的快捷方式了。如图
但是这样存在一个缺点,它默认对每个文件增加了该快捷方式。但是实际上我只需要当它是srt后缀的时候才需要。单纯的Automator没有实现这个过滤,需要依靠info文件实现
在 ~/Library/Services/ 目录下会找到你写的自动化,会存在一个类似如下内容的Info.plist文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>NSServices</key> <array> <dict> <key>NSBackgroundColorName</key> <string>background</string> <key>NSIconName</key> <string>NSActionTemplate</string> <key>NSMenuItem</key> <dict> <key>default</key> <string>SRT2TXT</string> </dict> <key>NSMessage</key> <string>runWorkflowAsService</string> <key>NSRequiredContext</key> <dict> <key>NSApplicationIdentifier</key> <string>com.apple.finder</string> </dict> <key>NSSendFileTypes</key> <array> <string>public.item</string> </array> </dict> </array> </dict> </plist>
|
此处可以看到NSSendFileTypes的值是public.item,需要修改为适配SRT。使用系统自带的mdls -name kMDItemContentType <FILE_PATH>
即可得到,比如我的SRT文件得到的值为 dyn.ah62d4rv4ge81g6xy,看着像乱码,但是它能用🤷,修改替换掉 public.item 即可
至此,该自动化仅仅在srt后缀的文件才出现,完美
参考
Show specific Quick Action for specific file extension
Creating Custom Finder Quick Actions With Automator