
E 盘那个叫「照片」的文件夹,现在有 3847 个文件,名字从 IMG_0001 排到 IMG_3847,中间断过四次:换手机、换相机、格式化存储卡、从旧电脑拷回来。于是 IMG_0001 出现了三个,日期全不一样。文件名看起来像索引,其实它只是当年的流水号,换一台设备就从头开始。
给这批东西改名,市面上的工具能列出二十个。真正需要分辨的只有一个问题:它读的是文件名,还是文件本身。这一条决定了它能解决哪类问题,也决定了它会制造哪类事故。
三种改名,对应三种工具
按字符串改:加前缀、加序号、替换某段、跑正则,这类操作只碰文件名的字符串,不打开文件。按元数据改:读 EXIF 里的拍摄时间、相机型号、镜头焦距,用这些值拼新名字,这类操作要解析每个文件的头部。按外部清单改:你手上有一张表,写着「旧名到新名」,工具照着表执行,不猜,只服从。三条路径对应三种可靠性:字符串最可控,元数据最省事,清单最不容易出错。
大部分人出问题,是在第三条路径上偷懒:拿字符串规则去近似元数据该做的事。用序号冒充时间,是这一步里最常见的错。
四个工具,各自站的位置
PowerToys 里的 PowerRename,Windows 上最轻的一个。右键选中文件就能开,支持正则、支持搜索替换,预览区会把改动部分高亮。它只改文件名,不读 EXIF。它的定位是「顺手改十来个」,不是「处理一批」。
Bulk Rename Utility,界面停留在 2000 年代,功能却极硬:序号、大小写、文件属性、时间戳、多段规则可以叠加,预览列表实时刷新。它的问题是没有真正的撤销,只能靠操作日志反推。它适合一次成型,不适合反复试。
Advanced Renamer,规则链的思路:把「加日期」「取相机型号」「补三位序号」拆成独立标签,串起来执行,方案能存下来复用,支持导入 CSV 和读 EXIF,有撤销。它是这四个里唯一把「可回滚」当成功能来做的。
ExifTool,命令行,跨平台。它是这四个里唯一能读也能写全部元数据的,也是唯一能把改名规则写成表达式的,还能导出 CSV 让你先看清楚再动手。它没有界面,所以它不会替你决定,也就不会替你做错。
| 维度 | PowerRename | Bulk Rename | Advanced Renamer | ExifTool |
|---|---|---|---|---|
| 读 EXIF | 否 | 部分(时间) | 是 | 是,全部 |
| 正则 | 是 | 是 | 是 | 是 |
| 预览 | 高亮预览 | 列表预览 | 列表预览 | 靠 CSV 空跑 |
| 撤销 | 资源管理器撤销 | 靠日志 | 内置撤销 | 需自己留底 |
| 可脚本化 | 否 | 否 | 部分 | 完全 |
| 舒服的规模 | 几十个 | 几百个 | 几千个 | 几万个 |
这张表最该看的是「撤销」那一行。改名是所有破坏性操作里最像可逆的一种——它只是换了个名字——但它破坏的是引用:播放列表、Lightroom 目录、网页链接、别人发给你的那份表格。改完之后想让一切回到原样,靠的不是改名工具,是你事先留下的清单。
三套组合,按场景分
场景一:手机导出的 20 张,想统一加「2026-11-13-」前缀。用 PowerRename,右键,填前缀,看一眼高亮,回车,十秒结束。这个场景里装任何第二个工具都是浪费。
场景二:3847 个文件跨四台设备,要按「拍摄时间加相机型号」重排。用 ExifTool,两步走:先导出 CSV 核对,再真改。凡是按元数据改名,第一步都应该是「先看一遍」,而不是「先改一批」。
exiftool -csv -FileName -DateTimeOriginal -Model . > list.csv
exiftool -d "%Y%m%d-%H%M%S.%%e" "-FileName<DateTimeOriginal" .
第一步导出的 CSV 是关键:里面会有一批 DateTimeOriginal 是空的,因为那些文件经过微信、经过截图、经过二次压缩,EXIF 已经被剥掉了。没有拍摄时间的文件,任何按时间改名的方法都会把它们排到最前或最后,这是工具替你做的决定,不是事实。
场景三:给客户交付,要求能回滚、要留操作记录。用 Advanced Renamer,存一份方案,执行前导出预览,执行后保留撤销记录。对外的交付物,值得为「可回滚」多花十分钟。
第四种组合确实存在,但不推荐:先 ExifTool 读时间生成 CSV,再 Advanced Renamer 按 CSV 批量套用。两步都可靠,只是中间那张表一旦编码错了(GBK 存成 UTF-8),中文文件名会整批变成问号。多一道工序,就多一个能把整批文件毁掉的环节。
三种选错的信号
信号一:你在用文件名里的序号推断拍摄顺序。IMG_0001 在某台机器上是去年三月,在另一台机器上是今年五月,序号只在一个设备、一段连续写入的时间里才有意义。看到序号就当成时间,是把流水号当成了时间戳。
信号二:为了三十个文件,你装到第三个软件才动手。这类需求用系统自带的重命名就够,装工具的收益是负的,因为你多花的时间已经超过了改名本身。工具的成本不只是安装,还有你为选它而做的比较。
信号三:你点完「重命名」,才想起来问能不能撤销。Bulk Rename Utility 在这个位置没有退路;如果你先试运行一次看结果,本来可以避免。选错的根源通常不是工具弱,是需求没被说清楚:你要的是「名字好看」,还是「能被别的程序认出来」。
动手之前,先留一份清单
最省事的做法不是装软件,是打开命令行,把当前文件名导出成一个文本:dir /b 大于 list.txt,或者在 PowerShell 里 Get-ChildItem -Name。这份清单成本五秒,价值在于把一次不可逆的操作,变成一次可逆的操作。
它有两个用处:改错了能照着倒回去;以后再问「这张照片原来叫什么」,还有据可查。还有一个容易忽略的细节——改名之前先确认目标目录里没有同名文件。四个工具里只有 ExifTool 会在冲突时给出明确提示,其余三个在某些设置下会静默覆盖。
覆盖不是改名失败,是改名成功并且删掉了一个文件,日志里看不出来。这类事故的共同点是:它不报错,只让总数变少。
写在最后
这三千多个文件,最后我没有全部改名。按年份建了四个文件夹,每个文件夹里只把当月的照片按日期重排,剩下的保持原样。不是因为懒,是因为那些没被改名的文件,本来就再也不会被打开——它们存在的意义是「当时存过」,不是「以后要找」。整理动作本身有价值,但价值不在整齐,在于你因此知道自己拥有什么。
名字是索引,不是内容。索引做得再漂亮,也不会让一张模糊的照片变清楚。很多整理冲动,其实是在用秩序感替代真正的判断。
你手机里最早的那张照片,文件名是什么?它现在还能打开吗?

评论 (0)