applescript通过调用screencapture -w命令实现窗口截图,自动添加时间戳命名、保存至指定文件夹,并支持finder定位或通知反馈,全程无需第三方工具。
applescript 本身不能直接截图,但可以调用 macos 原生命令 screencapture 完成窗口截图,并配合 shell 脚本逻辑实现自动命名、保存到指定文件夹、添加时间戳等存档功能。
获取前台应用的窗口截图
使用 screencapture -w 可以激活窗口选择模式,点击任意窗口即截取其内容(含阴影)。若需静默截取最前窗口(不交互),需借助 UI Scripting 获取窗口信息再触发截图 —— 但 macOS 14+ 对 Accessibility 权限限制更严,推荐稳妥方式:先用 -w 手动点选,再通过 AppleScript 自动化触发该命令并等待用户操作。
- 脚本中用
do shell script "screencapture -w ..."启动截图工具 - 系统会暂停脚本执行,直到用户完成窗口点击
- 截图自动保存为指定路径,无需额外等待或轮询
自动生成带时间戳的文件名
避免覆盖、便于归档的关键是动态生成唯一文件名。AppleScript 可通过 current date 获取时间,再格式化为 YYYY-MM-DD_HHMMSS 形式:
- 示例代码:
set now to current dateset fileName to "Window_" & (year of now as string) & "-" & text -2 thru -1 of ("0" & (month of now as number)) & "-" & text -2 thru -1 of ("0" & day of now) & "_" & text -2 thru -1 of ("0" & hours of now) & text -2 thru -1 of ("0" & minutes of now) & text -2 thru -1 of ("0" & seconds of now) & ".png" - 更简洁做法:用
do shell script "date +'%Y-%m-%d_%H%M%S'"借助 shell 格式化,返回字符串直接拼接
保存到指定文件夹并确保目录存在
存档路径建议设为 ~/Pictures/Screenshots/ 或自定义路径。AppleScript 需先检查并创建目标文件夹:
- 用
POSIX file和do shell script "mkdir -p ..."确保路径存在 - 完整保存路径示例:
/Users/yourname/Pictures/Screenshots/Window_2024-06-15_142308.png - 截图命令中直接指定完整路径:
screencapture -w "/path/to/Window_2024-06-15_142308.png"
可选:截图后自动在 Finder 中定位或通知
提升工作流闭环体验:
- 用
tell application "Finder" to reveal POSIX file "path/to/file.png"快速定位文件 - 或用
display notification "截图已存档" with title "Window Screenshot"弹出提示 - 如需打开图片,可用
tell application "Preview" to open POSIX file "..."
把上述逻辑组合起来,就能得到一个一键触发、手动点选窗口、自动命名存档、反馈明确的 macOS 窗口截图工具。不需要第三方依赖,纯系统命令 + AppleScript 即可稳定运行。











