如何为指定命令创建快捷方式?Automator获取文件夹名参数遇阻
解决Automator传递参数给mkwebdir脚本的问题
我明白你想把自己写的mkwebdir脚本做成随手就能用的快捷方式,不管是右键菜单触发还是适配Dropbox使用,却卡在了Automator传参这一步——别担心,我一步步教你搞定!
方法一:制作右键可用的快速操作(服务)
这是最贴合你需求的方式,做完之后不管在Finder(包括Dropbox文件夹)里右键,都能直接调用脚本并输入文件夹名:
- 打开Automator,新建一个快速操作(旧版macOS叫“服务”)
- 顶部“工作流程收到”下拉菜单选**“没有输入”(我们要弹窗让用户手动输入名称,不需要预先选文件/文本),同时确保“位于”选项选“Finder.app”**
- 从左侧动作库的“实用工具”里,拖入**“运行Shell脚本”**动作到右侧工作流区域
- 把Shell脚本的“传递输入”选项改成**“作为参数”**(这步是关键!很多人就是这里没设置对导致拿不到参数)
- 替换默认脚本内容为下面这段,它会弹出系统输入框让你填文件夹名,再调用你的脚本:
# 弹出系统输入框获取文件夹名称 FOLDER_NAME=$(osascript -e 'display dialog "请输入Web项目文件夹名称:" default answer "" buttons {"创建", "取消"} default button 1' -e 'text returned of result') # 如果用户点击取消,直接退出脚本 if [ -z "$FOLDER_NAME" ]; then exit 0 fi # 调用你的mkwebdir脚本,记得把路径改成你实际存放脚本的位置 # 比如脚本在/usr/local/bin里,直接写mkwebdir即可 /Users/你的用户名/path/to/mkwebdir "$FOLDER_NAME"
- 保存这个快速操作,命名为**“创建Web项目文件夹”**,之后你在Finder里右键(包括Dropbox文件夹内的空白处),就能在“服务”(或“快速操作”)菜单里找到它了!
进阶:在当前Finder窗口位置创建文件夹
如果你希望脚本在你当前打开的Finder窗口路径下创建文件夹,而不是默认位置,可以修改脚本为:
# 获取当前Finder窗口的路径 CURRENT_FOLDER=$(osascript -e 'tell application "Finder" to get POSIX path of (target of front window as text)') # 弹出输入框获取文件夹名 FOLDER_NAME=$(osascript -e 'display dialog "请输入Web项目文件夹名称:" default answer "" buttons {"创建", "取消"} default button 1' -e 'text returned of result') if [ -z "$FOLDER_NAME" ]; then exit 0 fi # 切换到当前窗口路径,再调用脚本 cd "$CURRENT_FOLDER" /Users/你的用户名/path/to/mkwebdir "$FOLDER_NAME"
你之前Automator失败的大概率原因
- 没把“传递输入”设置为“作为参数”,导致脚本接收不到输入值
mkwebdir脚本不在Automator的PATH环境变量里,所以要么写脚本的绝对路径,要么把脚本移到/usr/local/bin这类系统默认PATH目录中
额外:制作桌面快捷方式
如果想要双击就能用的快捷方式,只要在Automator里新建**“应用程序”**,把上面的脚本放进去,保存到桌面就行——双击它就会弹出输入框,直接创建文件夹。
内容的提问来源于stack exchange,提问作者r.panta




