如何按日期批量重命名文件(Windows + Mac 6 种方法)
Renomee 团队
发布于 2026年9月7日
如何按日期批量重命名文件(Windows + Mac 6 种方法)
快速结论: Windows 用 PowerShell(内置,支持毫秒)或 Bulk Rename Utility(免费 GUI,秒级精度)。Mac 用 Terminal bash(内置)或 Automator(GUI,格式选项有限)。两个平台都可以用 Renomee,写自然语言规则即可——支持毫秒、支持创建日期、支持原文件名保留。文件是照片的话,推荐用 EXIF 拍摄日期——复制文件不会重置它。
你扫描了 200 份合同,全叫 scan001.pdf、scan002.pdf。下载了一周的银行对账单,全是 Statement.pdf。视频项目文件夹里有 final.mp4、final_v2.mp4、FINAL_REAL.mp4。每个文件最后保存的日期就存在文件系统里——只需要把它写进文件名,文件夹就会自动按时间排好序。
本文介绍 Windows 4 种方法 + Mac 3 种方法,按操作难度排列,并详细说明哪些方法支持毫秒精度、如何在日期之外保留原文件名。
快速对比:6 种方法一览
| 方法 | 平台 | 日期来源 | 毫秒支持 | GUI | 难度 |
|---|---|---|---|---|---|
| PowerShell | Windows | 修改日期 / 创建日期 | ✅ | ❌ | ★★★☆☆ |
| Bulk Rename Utility | Windows | 修改日期 / 创建日期 | ❌ | ✅ | ★★★☆☆ |
| PowerToys PowerRename | Windows | 修改日期 | ❌ | ✅ | ★★☆☆☆ |
| Renomee | Windows + Mac | 修改日期 / 创建日期 | ✅ | ✅ | ★☆☆☆☆ |
| Terminal(bash) | Mac | 修改日期 / 创建日期* | ⚠️ | ❌ | ★★★☆☆ |
| Automator | Mac | 修改日期 | ❌ | ✅ | ★★☆☆☆ |
* Mac Terminal 读取创建日期需要 mdls;毫秒精度需要 Python 3 脚本。
创建日期 vs 修改日期——用哪个?
| 时间戳 | 由谁设置 | 何时重置 |
|---|---|---|
| 修改日期 | 操作系统——最后保存 | 文件内容被编辑并保存 |
| 创建日期 | 操作系统——文件到达此位置 | 文件被复制到新位置 |
| EXIF 拍摄日期 | 相机硬件——拍摄瞬间 | 永不重置 |
关键陷阱: 把一个文件夹从旧电脑复制到新电脑,所有文件的创建日期会变成今天,修改日期不变。因此:
- 文档、下载的文件 → 用修改日期——反映内容最后更改时间,不受迁移影响。
- 从未编辑过的扫描件 → 用创建日期,前提是扫描后没有复制过。
- 照片 → 用 EXIF 拍摄日期——任何迁移、同步都不影响它。详见按拍摄日期重命名照片。
日期格式模板——文件名里写什么?
选好格式,后面各方法都会用到这里的规则。
仅日期格式
YYYY-MM-DD → 2026-09-07 ← 推荐——ISO 8601,字母排序=时间排序
YYYYMMDD → 20260907 ← 紧凑版,适合文件名长度受限的场景
DD-MM-YYYY → 07-09-2026 ← 欧式,字母排序不等于时间排序
MM-DD-YYYY → 09-07-2026 ← 美式,字母排序不等于时间排序
年份放最前面。2026-09-07_报告.pdf 在任何系统(Windows、Mac、Linux、云盘)里按文件名排序都是时间顺序;09-07-2026_报告.pdf 不是。
日期 + 时间格式(秒精度)
同一天有多个文件时使用,例如同一天导出的十几张发票。
YYYY-MM-DD_HH-MM-SS → 2026-09-07_14-30-22
YYYYMMDD_HHMMSS → 20260907_143022 ← 紧凑,全平台安全
YYYY-MM-DDTHH-MM-SS → 2026-09-07T14-30-22 ← 完整 ISO 8601
用
-和_作分隔符。禁止用:——Windows 文件名不允许冒号。
毫秒精度格式
大多数文件不需要毫秒。以下场景需要:
- 高频写入的日志文件或数据库导出(每秒多个文件)
- 用文件系统日期重命名连拍照片(EXIF 拍摄日期更好)
- 自动化流水线需要全局唯一文件名
YYYYMMDD_HHMMSSfff → 20260907_143022847
YYYYMMDD_HHMMSS_fff → 20260907_143022_847 ← 加下划线,易读
YYYY-MM-DD_HH-MM-SS_fff → 2026-09-07_14-30-22_847
fff 代表三位毫秒数(000–999)。NTFS 以 100 纳秒精度存储时间戳,毫秒值是真实数据,不是占位符。
⚠️ 并非所有工具都支持毫秒,详见下方毫秒支持对比表。
日期与原文件名组合
最常见的实际场景——日期作前缀,原文件名保留以便查找。
| 组合模式 | 示例结果 |
|---|---|
| 日期前缀 + 原文件名 | 2026-09-07_对账单_八月.pdf |
| 日期时间前缀 + 原文件名 | 20260907_143022_对账单_八月.pdf |
| 毫秒前缀 + 原文件名 | 20260907_143022_847_export_batch3.log |
| 原文件名 + 日期后缀 | 对账单_八月_2026-09-07.pdf |
| 仅日期(替换原名) | 2026-09-07.pdf——仅在日期本身就是唯一标识时使用 |
如何在 Windows 上按日期重命名文件(4 种方法)
方法 1——PowerShell:按修改日期或创建日期重命名文件
PowerShell 是 Windows 内置工具,控制粒度最高:可选修改日期或创建日期、任意格式、支持毫秒。执行前先用 -WhatIf 预览,不会改动任何文件。
第 1 步。 打开 PowerShell(Win + X → Terminal,或搜索 "PowerShell")。
第 2 步。 导航到目标文件夹:
cd "C:\Users\你的用户名\Documents\合同"
第 3 步。 按需选用以下命令:
修改日期前缀 + 保留原文件名
# 预览(不重命名任何文件)
Get-ChildItem *.pdf | Rename-Item -WhatIf -NewName {
$_.LastWriteTime.ToString("yyyy-MM-dd") + "_" + $_.Name
}
# 确认预览正确后执行
Get-ChildItem *.pdf | Rename-Item -NewName {
$_.LastWriteTime.ToString("yyyy-MM-dd") + "_" + $_.Name
}
对账单_八月.pdf → 2026-09-07_对账单_八月.pdf
创建日期前缀 + 保留原文件名
Get-ChildItem *.pdf | Rename-Item -NewName {
$_.CreationTime.ToString("yyyy-MM-dd") + "_" + $_.Name
}
日期 + 时间(秒精度)——同一天多文件时避免冲突
Get-ChildItem *.pdf | Rename-Item -NewName {
$_.LastWriteTime.ToString("yyyy-MM-dd_HHmmss") + "_" + $_.Name
}
对账单_八月.pdf → 2026-09-07_143022_对账单_八月.pdf
毫秒精度——日志文件或高频导出
Get-ChildItem *.log | Rename-Item -NewName {
$_.LastWriteTime.ToString("yyyyMMdd_HHmmss_fff") + "_" + $_.Name
}
app.log → 20260907_143022_847_app.log
fff 写入真实 NTFS 毫秒值,三位数字,不是占位符。
递归处理子文件夹
Get-ChildItem -Path . -Recurse -File -Filter *.pdf | Rename-Item -NewName {
$_.LastWriteTime.ToString("yyyy-MM-dd") + "_" + $_.Name
}
难度: ★★★☆☆
毫秒支持: ✅ 原生(fff)
撤销: ❌ 无内置撤销——务必先用 -WhatIf 预览
方法 2——Bulk Rename Utility:GUI 日期重命名,格式控制最全
Bulk Rename Utility 是免费的 Windows 工具。界面较密集,但"新文件名"列实时显示每个文件的改名结果,确认无误后才会执行。
第 1 步。 从 bulkrenameutility.co.uk 下载安装。个人使用免费。
第 2 步。 打开 BRU,在左侧面板导航到目标文件夹,选中文件。
第 3 步。 找到右下角的 Auto Date(8) 面板,按以下配置:
- Mode →
Prefix(前缀) - Type →
Modified(修改日期)或Created(创建日期) - Fmt →
YMD - Cent → 勾选(强制 4 位年份)
- Sep →
_(日期与原文件名之间的分隔符) - Seg →
-(年/月/日之间的分隔符)
第 4 步。 确认"New Name"列正确 → 点击 Rename。
BRU 自定义日期格式
将 Fmt 切换为 Custom,输入格式字符串:
%Y-%m-%d → 2026-09-07
%Y%m%d_%H%M%S → 20260907_143022
%Y-%m → 2026-09 (按月分组)
%Y → 2026 (按年分组)
局限: BRU 最高支持秒精度,不支持毫秒。同一秒内有多个文件时,在 Numbering(5) 面板添加递增序号(_001、_002)来消除冲突。
难度: ★★★☆☆
毫秒支持: ❌
撤销: ❌——认真检查预览后再执行
方法 3——PowerToys PowerRename:右键菜单添加日期前缀
PowerToys PowerRename 集成到文件资源管理器右键菜单。它主要为照片 EXIF 拍摄日期重命名设计;对普通文件,仅支持修改日期,精度到天(无时间,无毫秒)。
第 1 步。 从 Microsoft Store 或 GitHub 安装 PowerToys。免费开源。
第 2 步。 在文件资源管理器选中文件 → 右键 → PowerRename。
第 3 步。 勾选 Use Regular Expressions,设置:
- Search →
(.+)(捕获完整原文件名) - Replace with →
$YYYY-$MM-$DD_$1
第 4 步。 确认预览正确 → 点击 Rename。
$YYYY、$MM、$DD 读取每个文件的修改日期,$1 将原文件名注入日期之后。
局限: 普通文件没有创建日期变量;不支持时间组件和毫秒。需要更精细格式时改用 PowerShell 或 BRU。
难度: ★★☆☆☆
毫秒支持: ❌
撤销: ✅(工具栏一键撤销)
方法 4——Renomee:自然语言规则,零配置
Renomee 用自然语言规则替代格式字符串和正则。描述重命名需求,Renomee 读取时间戳、生成预览、标注冲突、执行。每次操作都可一键撤销。
第 1 步。 打开 Renomee。拖入目标文件夹,或在文件资源管理器右键 → Open with Renomee。
第 2 步。 输入规则:
给每个文件加修改日期前缀,格式 YYYY-MM-DD,保留原文件名。
秒级精度:
添加修改日期和时间作为前缀,格式 YYYYMMDD_HHmmss,保留原文件名。
毫秒精度:
给所有日志文件加修改时间戳前缀,包含毫秒,格式 YYYYMMDD_HHmmss_fff。
创建日期:
给每个 PDF 加创建日期前缀,格式 YYYY-MM-DD。
第 3 步。 查看前后对比预览,冲突文件自动高亮。
第 4 步。 点击执行。如需撤销,进入历史面板一键还原。
Renomee 还支持条件逻辑——这是模板工具做不到的:
# 如果修改日期是今天(刚从别的电脑复制过来),改用创建日期
如果文件修改日期是今天,使用创建日期作为前缀,格式 YYYY-MM-DD。
# 递归处理子文件夹
给所有子文件夹中的 PDF 加修改日期前缀,格式 YYYY-MM-DD。
难度: ★☆☆☆☆
毫秒支持: ✅
撤销: ✅
如何在 Mac 上按日期重命名文件(3 种方法)
方法 5——Terminal(bash/zsh):在 Mac 上按日期重命名文件
Mac Terminal 对日期格式和文件筛选有完整控制。内置 date -r 读取修改时间;创建日期(Birth Time)需要 mdls;毫秒需要 Python 3 脚本。
第 1 步。 打开 Terminal(Spotlight → Terminal,或应用程序 → 实用工具 → Terminal)。
第 2 步。 导航到目标文件夹:
cd ~/Documents/合同
第 3 步。 按需选用以下命令:
修改日期前缀 + 保留原文件名
for f in *.pdf; do
prefix=$(date -r "$f" +%Y-%m-%d)
mv "$f" "${prefix}_${f}"
done
对账单_八月.pdf → 2026-09-07_对账单_八月.pdf
日期 + 时间(秒精度)
for f in *.pdf; do
prefix=$(date -r "$f" +%Y-%m-%d_%H-%M-%S)
mv "$f" "${prefix}_${f}"
done
对账单_八月.pdf → 2026-09-07_14-30-22_对账单_八月.pdf
创建日期(Birth Time)
date -r 只读修改时间,创建日期需要 mdls:
for f in *.pdf; do
birthdate=$(mdls -name kMDItemFSCreationDate -raw "$f" | awk '{print $1}')
mv "$f" "${birthdate}_${f}"
done
若该磁盘关闭了 Spotlight 索引,
kMDItemFSCreationDate会返回(null)。备选:GetFileInfo -d "$f"(需要 Xcode Command Line Tools:xcode-select --install)。
日期后缀(附加到原文件名后)
for f in *.pdf; do
base="${f%.*}"
ext="${f##*.}"
suffix=$(date -r "$f" +%Y-%m-%d)
mv "$f" "${base}_${suffix}.${ext}"
done
对账单_八月.pdf → 对账单_八月_2026-09-07.pdf
毫秒精度(需要 Python 3)
macOS date -r 仅支持到整秒。Python 3(macOS 12+ 预装)可读取小数时间戳:
python3 << 'EOF'
import os, glob, datetime
for path in glob.glob("*.log"):
t = os.path.getmtime(path)
dt = datetime.datetime.fromtimestamp(t)
ms = int((t - int(t)) * 1000)
prefix = dt.strftime("%Y%m%d_%H%M%S") + f"_{ms:03d}"
dirname = os.path.dirname(path) or "."
basename = os.path.basename(path)
os.rename(path, os.path.join(dirname, f"{prefix}_{basename}"))
EOF
app.log → 20260907_143022_847_app.log
将 *.log 替换为目标扩展名。如需创建日期替代修改日期,把 os.path.getmtime(path) 改为 os.stat(path).st_birthtime(仅 macOS)。
难度: ★★★☆☆
毫秒支持: ⚠️ 需 Python 3 脚本
撤销: ❌——先在副本上测试
方法 6——Automator:无代码按日期重命名(Mac 内置)
Automator 是 macOS 内置工具,不需要任何脚本,适合简单的日期前缀场景。
第 1 步。 打开 Automator(Spotlight → Automator)。新建 Quick Action。
第 2 步。 设置 Workflow receives → files or folders(在 Finder 中)。
第 3 步。 搜索并添加 Rename Finder Items 动作。提示是否在前面添加 Copy 步骤时,点击 Don't Add(直接重命名原文件)。
第 4 步。 在动作下拉菜单选 Add Date or Time。
第 5 步。 配置:
- Add →
Date - to →
beginning of name(前缀) - Date →
Last Modified Date - Format →
Custom→ 输入YYYY-MM-DD_(结尾下划线分隔原文件名)
第 6 步。 保存工作流(Cmd + S,命名)。在 Finder 选中文件 → 右键 → Quick Actions → 运行工作流。
局限:
- 无法使用创建日期——Automator 的 Rename 动作只暴露修改日期。
- 无时间组件——格式只支持年、月、日,不支持时分秒。
- 不支持毫秒。
需要时间精度或创建日期时,改用 Terminal 或 Renomee。
难度: ★★☆☆☆
毫秒支持: ❌
撤销: ✅(Finder 中 Cmd + Z 立即撤销)
方法 7——Renomee for Mac:自然语言规则,无需 Terminal
Renomee Mac 版与 Windows 版规则语法完全一致,无格式字符串,无 Shell 命令,同样支持一键撤销。
第 1 步。 在 Mac 上打开 Renomee,拖入目标文件夹。
第 2 步。 输入规则——与 Windows 版相同:
给每个文件加修改日期前缀,格式 YYYY-MM-DD,保留原文件名。
秒级精度:
添加修改日期和时间(YYYYMMDD_HHmmss)作为前缀,保留原文件名。
毫秒精度:
给所有日志文件加修改时间戳前缀,包含毫秒,格式 YYYYMMDD_HHmmss_fff。
创建日期(无需 mdls 命令):
给每个文件加创建日期前缀,格式 YYYY-MM-DD。
日期后缀:
在每个文件名(扩展名前)末尾追加修改日期(YYYY-MM-DD)。
第 3 步。 查看预览,冲突自动标红。
第 4 步。 执行。历史面板一键撤销。
难度: ★☆☆☆☆
毫秒支持: ✅
撤销: ✅
哪些方法支持毫秒时间戳?
| 方法 | 平台 | 毫秒支持 | 说明 |
|---|---|---|---|
| PowerShell | Windows | ✅ | .ToString("yyyyMMdd_HHmmss_fff")——读取真实 NTFS 时间戳 |
| Bulk Rename Utility | Windows | ❌ | 最高秒精度 |
| PowerToys PowerRename | Windows | ❌ | 普通文件仅支持日期(天) |
| Renomee | Windows + Mac | ✅ | 自然语言:写"包含毫秒"即可 |
| Terminal(bash) | Mac | ⚠️ 需变通 | date -r 到秒;毫秒需 Python 3 脚本 |
| Automator | Mac | ❌ | 仅日期输出 |
什么时候真正需要毫秒?
| 场景 | 是否需要毫秒 |
|---|---|
| 按周归档的报告 | ❌ 日期格式够用 |
| 同一天导出的发票 | ⚠️ 加时间(秒级)即可 |
| 服务器日志(每秒多个文件) | ✅ 需要毫秒 |
| 连拍照片(用文件系统日期) | ✅(推荐改用 EXIF 拍摄日期) |
| 数据库导出批次 | ✅ 建议使用毫秒 |
绝大多数文档和扫描件归档场景,秒精度足以处理同日期冲突。即使秒级仍有冲突(极少见于非日志场景),加计数后缀(_001、_002)比引入毫秒更简单。
常见问题
创建日期和修改日期有什么区别?
修改日期在每次保存文件内容时更新。创建日期记录文件在当前路径首次出现的时间——复制文件会把创建日期重置为当天,修改日期不受影响。归档文档时,修改日期通常是更可靠的选择,因为它能在文件迁移后仍保持内容的"真实年龄"。
哪些方法支持毫秒精度?
Windows 上 PowerShell 通过 fff 格式符原生支持毫秒。Renomee 在 Windows 和 Mac 上均支持毫秒,用自然语言描述即可。Mac Terminal 需要 Python 3 脚本(date -r 仅到秒)。Bulk Rename Utility 和 Automator 不支持毫秒。
重命名文件会改变时间戳吗?
不会。重命名只修改目录项中的文件名,文件内容和所有时间戳(修改日期、创建日期、访问日期)在 Windows 和 Mac 上均保持不变。
多个文件时间戳完全相同怎么办?
加计数后缀解决冲突。PowerShell 中跟踪 $counter 变量追加 -1、-2;Bulk Rename Utility 在 Numbering 面板添加递增序号;Renomee 在预览阶段自动检测所有冲突并高亮,执行前已解决。
如何在 Mac 上用创建日期重命名文件?
macOS 将创建日期称为 Birth Time,通过 mdls -name kMDItemFSCreationDate -raw "文件名" 读取,然后代入重命名循环。Renomee for Mac 直接支持创建日期,写"使用创建日期"即可,无需任何 Shell 命令。
我的文件是照片,该用修改日期还是 EXIF 拍摄日期?
照片务必使用 EXIF 拍摄日期。修改日期和创建日期在跨设备复制或同步时都会被重置;EXIF 拍摄日期由相机在拍摄瞬间写入,无论文件被移动、复制多少次都不会改变。详见如何在 Windows 11 上按拍摄日期重命名照片。
汇总:选哪种方法?
| 你的情况 | 最佳方法 |
|---|---|
| Windows,命令行无障碍,需要毫秒精度 | PowerShell |
| Windows,想要 GUI,秒精度够用 | Bulk Rename Utility |
| Windows,已装 PowerToys,只需快速加日期前缀 | PowerToys PowerRename |
| Windows 或 Mac,不想写代码,需要撤销 | Renomee |
| Mac,命令行无障碍,不需要毫秒 | Terminal(bash) |
| Mac,想要 GUI,只需日期前缀 | Automator |
| Mac,需要毫秒精度但不想写脚本 | Renomee for Mac |
| 文件是照片——任何平台 | 改用 EXIF 拍摄日期 |
延伸阅读
标签
关于作者
Renomee 团队 是 Renomee 的内容贡献者。
相关文章
IMG_0001 怎么变成有意义的文件名?AI 读取照片信息,1000 张 2 分钟搞定
1000 张照片全叫 IMG_0001、DSC_0001,找文件要一张张打开看?Renomee AI 读取拍摄时间、场景信息,2 分钟批量生成有意义的文件名。支持中英文混合命名规则,摄影师和设计师必备。
批量删除文件名特殊字符:4 种方法实测,清理 1000 个文件名只需 15 秒
文件名里的括号、方括号、乱码字符让你抓狂?本文实测 4 种方案:手动 F2、PowerShell 正则、PowerRename、AI 工具,批量删除 Windows 非法字符和常见污染字符,处理 1000 个文件只需 15 秒,附可直接运行的 PowerShell 脚本。
安装完不知从哪开始?5 分钟完成批量重命名工具全流程操作
刚下载 Renomee,面对空白界面不知从哪开始?跟着本入门教程:导入文件 → 用自然语言描述命名规则 → AI 自动处理 → 确认执行,全程仅需 5 分钟。包含摄影、设计、文档管理和学术论文 4 大场景实战模板,零技术基础也可立即上手使用。