如何一次将多个 PDF 文件批量重命名为不同名称
Renomee 团队
发布于 2026年9月17日 · 更新于 2026/9/17
如何一次将多个 PDF 文件批量重命名为不同名称
在文件资源管理器中选中 50 个 PDF,按 F2,输入名称——结果是 发票 (1).pdf、发票 (2).pdf、发票 (3).pdf。每个文件仍然共享同一个基础名称,只是序号不同。
大多数人真正想要的是这样的结果:
scan_0001.pdf → 阿里巴巴-发票-2026-09-17.pdf
scan_0002.pdf → 办公室租赁合同-2026.pdf
scan_0003.pdf → 招商银行-流水-8月.pdf
每个文件得到不同的、有意义的名字。要做到这一点,关键在于一个问题:每个新文件名从哪里来?
来自序号、来自局部替换规则、来自清单表格、来自 PDF 元数据,还是来自文件内容本身?答案决定了用什么工具。
快速答案: 统一基础名+编号 → 文件资源管理器。替换某个片段 → PowerShell。有名称清单 → CSV + PowerShell。从 PDF 元数据取名 → Python + PyMuPDF。从文档内容或扫描件取名 → Renomee。
先判断你的改名任务是哪种类型
| 你真正需要的 | 示例 | 最佳方案 |
|---|---|---|
| 统一基础名 + 自动编号 | 报告 (1).pdf、报告 (2).pdf | 文件资源管理器(F2) |
| 替换所有文件名中的某个片段 | 2025_报告_A.pdf → 2026_报告_A.pdf | PowerShell / PowerRename |
| 已有每个文件对应的新名称清单 | 200 个 PDF,200 个不同的新名字 | CSV + PowerShell 或 Renomee |
| 新名称存储在 PDF 元数据里 | 标题字段:「Q3 销售报告」 | Python + PyMuPDF 或 Renomee |
| 新名称来自文档内容 | 供应商、日期、发票号 | OCR + Python 或 Renomee |
分界线:如果新名称来自你能描述的规则,传统工具够用。如果每个名称都要从文件内部读取,就需要内容识别能力。
场景一:将所有 PDF 统一重命名为同一基础名加自动编号
最简单的情况——所有 PDF 共享一个名称,只是序号不同。
文件资源管理器(无需安装额外工具)
- 在文件资源管理器中选中所有目标 PDF。
- 按
F2,输入基础名称如「发票」。 - 回车。
结果:
发票 (1).pdf
发票 (2).pdf
发票 (3).pdf
局限: 只能用 (1) 格式,无法得到 001 或 _001。编号顺序取决于当前排序方式。
Renomee
用自然语言描述规则:
"将所有文件按修改日期排序,命名为「发票」,从 001 开始,三位数编号。"
预览效果:
原始文件名 新文件名
scan_0001.pdf → 发票_001.pdf
scan_0002.pdf → 发票_002.pdf
scan_0003.pdf → 发票_003.pdf
你可以控制排序方式(名称/日期/大小)、编号位数和分隔符。执行后支持一键撤销。
场景二:批量替换所有 PDF 文件名中的某个片段
大多数「要不同名字」的需求,本质上是局部替换:每个文件保留自己独特的部分,只改其中一个共同片段——年份、项目代码、前缀。
2025_Q1_上海.pdf → 2026_Q1_上海.pdf
2025_Q2_北京.pdf → 2026_Q2_北京.pdf
2025_Q3_广州.pdf → 2026_Q3_广州.pdf
PowerShell
Get-ChildItem -Filter "2025_*.pdf" |
Rename-Item -NewName { $_.Name -replace '^2025_', '2026_' } -WhatIf
-WhatIf 显示将要发生的变化,不实际执行。确认无误后去掉 -WhatIf 再运行。
为所有 PDF 添加前缀:
Get-ChildItem -Filter "*.pdf" |
Rename-Item -NewName { '财务_' + $_.Name } -WhatIf
注意: PowerShell 没有撤销功能,错误的匹配规则会静默地重命名所有文件。
PowerRename(PowerToys,免费)
图形界面的查找替换,无需写脚本。选中 PDF,右键 → PowerRename,输入旧片段和新片段,实时预览。
Renomee
直接描述需求:
"把所有文件名中的『2025』替换为『2026』。"
每个文件并排显示原始名称和新名称,执行后支持完整撤销。
场景三:从预先准备好的名称清单批量重命名多个 PDF
你已经知道每个文件的目标名称,只是不想一个一个手动改。这是最直接的「不同名字」场景。
PowerShell + CSV
创建 names.csv,包含新旧文件名的对应关系:
OldName,NewName
scan_0001.pdf,阿里巴巴-发票-2026-09-17.pdf
scan_0002.pdf,办公室租赁合同-2026.pdf
scan_0003.pdf,招商银行-流水-8月.pdf
在 PDF 所在文件夹中执行:
Import-Csv ".\names.csv" | ForEach-Object {
Rename-Item -LiteralPath $_.OldName -NewName $_.NewName -WhatIf
}
最常见的三个出错场景:
- 文件名大小写不匹配 —— CSV 写的是
Scan_0001.pdf,实际文件是scan_0001.pdf。 - 目标名称重复 —— 两行映射到相同的新名称,只有一个能成功。
- 行数与文件数不符 —— CSV 有 98 行,文件夹有 100 个文件,2 个文件被静默跳过。
注意: 去掉 -WhatIf 后无法撤销。先备份当前文件名:
Get-ChildItem -Filter "*.pdf" | Select-Object Name | Export-Csv backup.csv -NoTypeInformation
Renomee
直接导入 CSV。Renomee 自动匹配每一行与对应文件,展示预览,并在执行前标记出重复目标名和数量不匹配的情况。执行后支持一键撤销。
场景四:用 PDF 内部存储的元数据作为新文件名
PDF 文件本身携带元数据字段:标题(Title)、作者(Author)、主题(Subject)、关键词(Keywords)。当「标题」字段有内容时——常见于从 Word、ERP 系统或学术数据库导出的 PDF——它是最干净的命名来源,不需要解析文档正文。
检查 PDF 是否有标题元数据
右键 PDF → 属性 → 详细信息 标签。如果「标题」行显示有用的文字,如「2026 年 Q3 销售报告 - 上海」,就可以直接用。如果为空或与文件名一样,说明该字段未填写。
Python + PyMuPDF(免费)
pip install pymupdf
import fitz # PyMuPDF
import os
folder = r"C:\Users\你的用户名\Documents\PDFs"
for filename in os.listdir(folder):
if not filename.lower().endswith(".pdf"):
continue
path = os.path.join(folder, filename)
doc = fitz.open(path)
title = doc.metadata.get("title", "").strip()
doc.close()
if not title:
print(f"无标题元数据:{filename}")
continue
# 去除 Windows 文件名中不合法的字符
safe_title = "".join(c for c in title if c not in r'\/:*?"<>|').strip()
new_name = safe_title[:120] + ".pdf"
new_path = os.path.join(folder, new_name)
if os.path.exists(new_path):
print(f"目标已存在,跳过:{new_name}")
continue
os.rename(path, new_path)
print(f"{filename} → {new_name}")
先空跑验证:注释掉 os.rename() 这行,看打印输出是否符合预期,再去掉注释执行。
局限: 如果标题字段为空、不一致或格式混乱,脚本会静默跳过或产生无意义的文件名。
Renomee
拖入 PDF,Renomee 自动读取所有元数据字段并纳入命名预览。也可以混合使用多个来源:"如果有 PDF 标题就用标题;否则从首页提取供应商名称和日期。"
场景五:让 PDF 文档内容决定文件名——文字提取与 OCR
文件资源管理器、PowerShell 只能操作文件名本身。一个叫 scan_0042.pdf 的文件,没有任何工具能从名称判断出里面是发票、合同还是银行流水。
基于规则的重命名:文件名 → 文件名
基于内容的重命名:文档内容 → 文件名
目标效果:
scan_0042.pdf → 阿里巴巴-发票-2026-09-17-ALY88421.pdf
scan_0043.pdf → 办公室租赁合同-2026.pdf
scan_0044.pdf → 招商银行-流水-2026年8月.pdf
可搜索 PDF(有文字层)—— Python + PyMuPDF
import fitz
import os
import re
folder = r"C:\Users\你的用户名\Documents\PDFs"
for filename in os.listdir(folder):
if not filename.lower().endswith(".pdf"):
continue
path = os.path.join(folder, filename)
doc = fitz.open(path)
text = doc[0].get_text("text") if doc.page_count > 0 else ""
doc.close()
# 示例:提取 YYYY-MM-DD 格式的日期
date_match = re.search(r'\d{4}-\d{2}-\d{2}', text)
date_str = date_match.group() if date_match else "未知日期"
new_name = f"文档-{date_str}.pdf"
print(f"{filename} → {new_name}")
# os.rename(path, os.path.join(folder, new_name))
每种文档类型(发票、合同、对账单)的版式不同,需要分别写解析逻辑。扫描件(纯图像 PDF)调用 get_text() 会返回空字符串,还需要额外安装和配置 Tesseract 做 OCR。
Renomee
内置 OCR 和内容分析,无需安装额外工具。
- 将 PDF 拖入 Renomee。
- 用自然语言描述命名规则:
"从每个文件中提取供应商名称、开票日期和发票号。格式:供应商-日期-发票号.pdf。"
- Renomee 处理每个文件并逐一展示预览:
原始文件名 提取内容 新文件名
scan_0042.pdf 供应商: 阿里巴巴 | 日期: 2026-09-17 | 发票: ALY-88421 → 阿里巴巴-2026-09-17-ALY88421.pdf
scan_0043.pdf 类型: 租赁合同 | 日期: 2026 | 标题: 办公室租赁 → 办公室租赁合同-2026.pdf
scan_0044.pdf 供应商: 招商银行 | 账期: 2026年8月 → 招商银行-流水-2026年8月.pdf
- 确认后执行,随时可撤销。
详细的 PDF 内容命名流程,参见如何根据内容重命名 PDF 文件。
快速对照:选哪种方案
| 情况 | 推荐方案 |
|---|---|
| 统一基础名 + 序号 | 文件资源管理器(F2) |
| 替换所有 PDF 文件名中的某个片段 | PowerShell -replace 或 PowerRename |
| 已有所有目标名称的清单 | CSV + PowerShell 或 Renomee |
| PDF 有已填写的标题元数据 | Python + PyMuPDF 或 Renomee |
| 扫描件 PDF(纯图像) | Renomee(内置 OCR) |
| 可搜索与扫描件混合 | Renomee |
| 需要执行前预览 | Renomee |
| 需要内置撤销 | 文件资源管理器(Ctrl+Z,仅限立即撤销)或 Renomee(随时可撤销) |
执行前快速检查清单
- 保留
.pdf扩展名 —— PowerShell 中使用$_.Extension或直接拼接.pdf。 - 检查目标名称是否重复 —— 同一文件夹内不能有两个文件同名。
- 先跑
-WhatIf—— PowerShell 预览模式,不会实际修改文件。 - 先用 5—10 个文件测试 —— 验证规则无误后再批量执行。
- 备份当前文件名 ——
Get-ChildItem -Filter "*.pdf" | Select-Object Name | Export-Csv backup.csv -NoTypeInformation
常见问题
Windows 文件资源管理器能批量重命名 PDF 为完全不同的名字吗?
只能给同一个基础名加序号,比如 文档 (1).pdf、文档 (2).pdf。要给每个文件取完全不同的名字,需要用 PowerShell、Python 或 Renomee。
怎么用 Excel 表格批量重命名 PDF 文件?
将表格导出为 CSV,包含「旧文件名」和「新文件名」两列,用 PowerShell 的 Import-Csv + Rename-Item 执行。Renomee 也支持直接导入 CSV 或 Excel,自动匹配并在执行前标记异常。
如何一次给多个 PDF 添加日期前缀?
用 PowerShell:
Get-ChildItem -Filter "*.pdf" |
Rename-Item -NewName { '2026-09-17_' + $_.Name } -WhatIf
用 Renomee:输入「在所有 PDF 文件名前面加上 2026-09-17_」即可。
PDF 元数据和 PDF 内容有什么区别?
元数据 = 存储在 PDF 文件头里的字段(标题、作者、主题),不需要打开文档就能读取。扫描仪输出的 PDF 通常元数据为空。
内容 = 文档页面上实际显示的文字——供应商名称、日期、金额、标题。需要文字提取(可搜索 PDF)或 OCR(扫描件)。内容更可靠,因为它来自实际打印的信息。
批量重命名发票 PDF 后能撤销吗?
文件资源管理器支持立即用 Ctrl+Z 撤销。PowerShell 的 Rename-Item 不可逆,除非你事先备份了文件名或写了回滚脚本。Renomee 会记录每次操作,随时支持一键撤销。
有没有免费的方式批量重命名多个 PDF 为不同名称?
有。PowerShell 是 Windows 内置工具,完全免费,支持局部替换和 CSV 导入命名。Python + PyMuPDF 也免费,能读取元数据和提取文字。两者都需要写脚本。Renomee 有免费额度,适合轻度使用。
总结
批量重命名多个 PDF 为不同名称,始终回归一个问题:每个名称从哪里来?
- 统一基础名 + 序号 → 文件资源管理器
- 替换某个片段 → PowerShell 或 PowerRename
- 已有名称清单 → CSV + PowerShell 或 Renomee
- 从 PDF 元数据取名 → Python + PyMuPDF 或 Renomee
- 从文档内容或扫描件取名 → Renomee
如果命名规则明确,PowerShell 或 PowerRename 是最低门槛的选项。如果每个名称都要从文件内部读取,选择有内容识别能力的工具——执行前预览每一条结果。
标签
关于作者
Renomee 团队 是 Renomee 的内容贡献者。
相关文章
IMG_0001 怎么变成有意义的文件名?AI 读取照片信息,1000 张 2 分钟搞定
1000 张照片全叫 IMG_0001、DSC_0001,找文件要一张张打开看?Renomee AI 读取拍摄时间、场景信息,2 分钟批量生成有意义的文件名。支持中英文混合命名规则,摄影师和设计师必备。
批量删除文件名指定字符:去括号、删前几位、清特殊符号(4 种方法)
想批量删除文件名中的指定字符、括号或前几位?对比手动 F2、PowerRename、PowerShell 和 AI 4 种方案,附可直接运行的脚本,支持去括号、删前/后 N 位、清 Emoji、下划线和 Windows 非法字符。
批量删除文件名中的指定文字:3 种方法,不用逐个手改
想批量删除文件名中的某段固定文字,比如"办事指南"、"最终版"、"_副本"?本文对比 PowerShell、PowerRename 和 AI 3 种方案,附可直接运行的脚本,无需正则基础也能操作。