automator 无法修改文件创建时间(birth time),因 macos 系统限制;仅支持修改修改时间(mtime)和访问时间(atime),可通过 shell 脚本调用 touch 或 setfile 间接设置 mtime 或元数据中的“创建日期”字段。

Automator 本身不直接提供“修改文件创建时间”的操作,因为 macOS 系统出于安全和稳定性考虑,限制普通用户修改文件的创建时间(birth time)。你只能通过命令行工具 touch 或第三方工具(如 SetFile)间接影响部分时间戳,但真正可靠地批量设置创建时间,在标准 macOS 下几乎不可行。
为什么 Automator 难以修改创建时间?
macOS 文件系统(APFS/HFS+)中,创建时间(birth time)由内核在文件首次写入磁盘时设定,且无法通过常规 API 修改。Automator 的图形化操作(如“调整时间戳”)仅支持修改修改时间(Modification)和访问时间(Access),不包含创建时间。
-
touch -t只能改 mtime/atime,对 birth time 无效 -
SetFile -d(来自 Xcode 命令行工具)可设“Mac OS 9 风格的创建日期”,但这只是元数据兼容字段,不是真正的文件系统 birth time - 真正修改 birth time 需绕过内核保护(如用 debug 模式、内核扩展或恢复模式下操作),不推荐且不稳定
可行替代方案:用 Automator + Shell 脚本改 mtime/atime
如果你实际目标是统一文件的时间参考(例如归档排序、备份一致性),修改修改时间(mtime)通常已足够。可用 Automator 调用 shell 脚本实现:
- 新建 Automator 工作流 → 选择“快速操作”或“应用程序”
- 添加“运行 Shell 脚本”操作,Shell 选
/bin/zsh,传递输入选“作为参数” - 脚本内容示例(将所有选中文件的修改时间设为 2024-01-01 12:00):
for f in "$@"; do [[ -f "$f" ]] && touch -mt 202401011200 "$f" done
✅ 这会批量更新文件的修改时间(mtime),Finder 和大多数工具按此排序;❌ 不改变创建时间,但多数场景下更实用、更安全。
若坚持要“模拟”创建时间(仅限 Metadata 层)
使用 SetFile 设置资源叉中的创建日期(不影响文件系统 birth time,但部分老软件或 Spotlight 可能读取):
- 先安装 Command Line Tools:
xcode-select --install - Automator 中“运行 Shell 脚本”里写:
for f in "$@"; do [[ -f "$f" ]] && SetFile -d "01/01/2024 12:00:00" "$f" done
⚠️ 注意:该日期仅显示在“显示简介”中“创建日期”字段,终端 stat -f "%SB" file 仍返回原始 birth time;且在较新 macOS 版本中该字段可能被忽略。
更灵活的选择:用纯 Terminal 批量处理
对于复杂需求(如按文件名推算时间、保留相对偏移等),直接用终端配合 find、touch、exiftool(支持照片/视频的原始时间提取)更可控:
- 按名称含日期重设 mtime:
touch -t $(echo "202405151430" | sed 's/^\(.\{8\}\)\(.\{4\}\)$/\1\2/') file.jpg - 用 exiftool 同步照片的拍摄时间到 mtime:
exiftool "-FileModifyDate<datetimeoriginal></datetimeoriginal> - 配合 Automator 封装成一键应用:把上述命令保存为 .sh,再用 Automator “运行 Shell 脚本”调用它
不复杂但容易忽略:优先明确你的真实需求——是让 Finder 排序一致?让备份工具识别新旧?还是满足某软件的导入要求?绝大多数情况下,精准控制 mtime 就已足够,无需强求创建时间。










