applescript 可原生启动 macos 应用,最简方式为 tell application "app名称" to launch,支持 activate 前台激活、嵌入快捷指令定时触发、终端 osascript 调用及加等待逻辑提升可靠性。

AppleScript 是 macOS 原生支持的自动化语言,启动应用只是它最基础也最实用的功能之一。不需要安装额外工具,只要语法正确、目标 App 支持脚本化,就能一键拉起程序——而且还能控制是否前台激活、是否等待就绪、甚至带参数启动。
用 AppleScript 直接启动应用
最简方式就是一句 tell application "App名称" to launch。注意:这里填的是应用在 Dock 或菜单栏里显示的完整名称(不是 .app 文件名),比如:
- 微信桌面版 →
"WeChat" - 备忘录 →
"Notes" - Safari →
"Safari" - 终端 →
"Terminal"
你可以把它存在 .scpt 文件里,双击运行;也可以直接在“脚本编辑器”中点“运行”测试。
如果想启动后立刻切到前台,改用:tell application "WeChat" to activate
(activate 会启动并聚焦窗口;launch 只启动,不抢焦点)
嵌入快捷指令实现定时或触发式启动
快捷指令是目前对普通用户最友好的自动化入口。
新建一个“个人自动化”,触发条件选“特定时间”或“到达某位置”等,然后添加“运行 AppleScript”操作,粘贴上面那行代码即可。
关键细节:
- 必须关闭“运行前询问”,否则每次都会弹窗;
- 确保你已登录且图形界面活跃(快捷指令无法在锁屏或未登录时执行);
- 启动后若应用没自动弹出,可能是它默认后台运行——试试把
launch换成activate。
通过终端命令快速调用
适合写进 Shell 脚本、配合定时任务,或做成一键热键。
在终端执行:osascript -e 'tell application "Notes" to launch'
也可以保存为独立脚本文件(如 start-notes.scpt),再用:osascript ~/Desktop/start-notes.scpt
如果需要传参或组合其他命令(比如启动前先检查是否已运行),可在脚本里用 do shell script 调用 pgrep 或 killall,例如:
if (do shell script "pgrep -x 'Notes' > /dev/null && echo 1 || echo 0") is "0" then
tell application "Notes" to launch
end if
让启动行为更可靠的小技巧
有些应用启动慢,或依赖其他服务(比如微信需网络、某些工具需权限),直接 activate 可能失败。这时可以加等待逻辑:
tell application "WeChat"
launch
repeat while it is not running
delay 0.5
end repeat
activate
end tell
另外,部分应用(如 VS Code、Obsidian)支持命令行参数,AppleScript 本身不直接传参,但可通过 do shell script "open -a 'Obsidian' --args '--new-window'" 实现。
不复杂但容易忽略











