首页/博客/教程/如何按日期批量重命名文件(Windows + Mac 6 种方法)
教程入门14 分钟阅读

如何按日期批量重命名文件(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.pdfscan002.pdf。下载了一周的银行对账单,全是 Statement.pdf。视频项目文件夹里有 final.mp4final_v2.mp4FINAL_REAL.mp4。每个文件最后保存的日期就存在文件系统里——只需要把它写进文件名,文件夹就会自动按时间排好序。

本文介绍 Windows 4 种方法 + Mac 3 种方法,按操作难度排列,并详细说明哪些方法支持毫秒精度、如何在日期之外保留原文件名。


快速对比:6 种方法一览

方法平台日期来源毫秒支持GUI难度
PowerShellWindows修改日期 / 创建日期★★★☆☆
Bulk Rename UtilityWindows修改日期 / 创建日期★★★☆☆
PowerToys PowerRenameWindows修改日期★★☆☆☆
RenomeeWindows + Mac修改日期 / 创建日期★☆☆☆☆
Terminal(bash)Mac修改日期 / 创建日期*⚠️★★★☆☆
AutomatorMac修改日期★★☆☆☆

* 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
}

对账单_八月.pdf2026-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
}

对账单_八月.pdf2026-09-07_143022_对账单_八月.pdf

毫秒精度——日志文件或高频导出

Get-ChildItem *.log | Rename-Item -NewName {
    $_.LastWriteTime.ToString("yyyyMMdd_HHmmss_fff") + "_" + $_.Name
}

app.log20260907_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) 面板,按以下配置:

  • ModePrefix(前缀)
  • TypeModified(修改日期)或 Created(创建日期)
  • FmtYMD
  • 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 StoreGitHub 安装 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

对账单_八月.pdf2026-09-07_对账单_八月.pdf

日期 + 时间(秒精度)

for f in *.pdf; do
  prefix=$(date -r "$f" +%Y-%m-%d_%H-%M-%S)
  mv "$f" "${prefix}_${f}"
done

对账单_八月.pdf2026-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.log20260907_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 receivesfiles or folders(在 Finder 中)。

第 3 步。 搜索并添加 Rename Finder Items 动作。提示是否在前面添加 Copy 步骤时,点击 Don't Add(直接重命名原文件)。

第 4 步。 在动作下拉菜单选 Add Date or Time

第 5 步。 配置:

  • AddDate
  • tobeginning of name(前缀)
  • DateLast Modified Date
  • FormatCustom → 输入 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 步。 执行。历史面板一键撤销。

难度: ★☆☆☆☆
毫秒支持:
撤销:


哪些方法支持毫秒时间戳?

方法平台毫秒支持说明
PowerShellWindows.ToString("yyyyMMdd_HHmmss_fff")——读取真实 NTFS 时间戳
Bulk Rename UtilityWindows最高秒精度
PowerToys PowerRenameWindows普通文件仅支持日期(天)
RenomeeWindows + Mac自然语言:写"包含毫秒"即可
Terminal(bash)Mac⚠️ 需变通date -r 到秒;毫秒需 Python 3 脚本
AutomatorMac仅日期输出

什么时候真正需要毫秒?

场景是否需要毫秒
按周归档的报告❌ 日期格式够用
同一天导出的发票⚠️ 加时间(秒级)即可
服务器日志(每秒多个文件)✅ 需要毫秒
连拍照片(用文件系统日期)✅(推荐改用 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 拍摄日期

延伸阅读

标签

#按日期批量重命名文件#按修改日期重命名文件#按创建日期重命名文件#Windows 批量重命名文件#Mac 批量重命名文件

关于作者

Renomee 团队 是 Renomee 的内容贡献者。