文件批量重命名,听起来是个挺头疼的活?其实现在有了ChatGPT,连一行代码都不用写。只要把你的需求说清楚,它就能生成一个可以直接运行的Python脚本——比如给所有PDF加个前缀、按Excel表格的映射关系改名、或者递归处理子文件夹里的MP3。下面分几种常见场景来说明,每一步都附上实操要点。

给整个文件夹加统一前缀或后缀
这种场景最常用:临时加个标签、区分版本、或者归档前做标准化命名(比如把所有合同文件都加上【2026Q2】这样的前缀)。具体操作很简单——打开ChatGPT,输入一段清晰的指令:
“请生成一段Python脚本,给C:\Users\Jack\Downloads\合同文件夹下所有文件名开头加上【已审核】,保留原扩展名。跳过已带该前缀的文件。”
把返回的代码复制下来,在VS Code或记事本里新建一个.py文件,粘贴保存,双击运行就行了。这里有个关键提醒:脚本默认不会删除原文件,但【若目标路径存在同名文件,os.rename会报错并中断执行】,所以第一次运行前,最好先备份一下整个文件夹。
按Excel表格内容精准映射重命名
如果命名规则不是简单的加前缀,而是需要根据一个对照表来映射,比如课件、专利编号、视频教程章节——这种场景下,Excel映射法最靠谱。
准备工作:一个Excel文件,A列放新文件名(如“01_开场介绍”),B列放当前文件名的关键词(如“intro”)。确保这个Excel文件和待重命名的文件在同一个文件夹里。
向ChatGPT提问:
“读取D:\课程\第1章.xlsx的A、B两列,将D:\课程\第1章文件夹中所有mp4文件,用B列内容匹配文件名(忽略大小写和符号),匹配成功则重命名为A列内容+原扩展名。”
生成的代码会自动过滤掉文件名中的?、|、-、_等干扰字符,只比对纯英文/数字部分——这样可以避免因为标点差异导致匹配失败,算是很贴心的设定了。
递归处理多层子文件夹里的文件
如果你的文件分散在多个子文件夹里,比如D:\资料库下面有“张三”“李四”“王五”三个子文件夹,每个子文件夹里都有若干.jpg文件,需要把每个.jpg文件名改成“子文件夹名_原名”这种格式。这时候就要用到递归处理。
第一步:确认文件结构。第二步:在ChatGPT中输入提示词,明确要求“遍历指定目录下所有子目录,对每个子目录内的.jpg文件执行重命名,新文件名格式为‘子目录名_原文件名’”。第三步:运行脚本前,先手动抽查1~2个子文件夹里的文件名——如果包含空格或特殊符号,脚本可能会因为路径解析失败而跳过。遇到这种情况,需要在提示词中追加一句“对文件名中的空格和括号做转义处理”。
这一步操作起来很简单,直接把文件拖进去就行(注:指把文件夹路径拖入脚本所在的目录或命令提示符中)。
去掉文件名中固定字符串(如广告前缀、冗余后缀)
方法一:正则批量清洗。举个例子,告诉ChatGPT:“清理F:\北交所上市公司全部发明专利文件夹下所有.xls文件:删掉开头的【企查查】专利-,删掉文件名中任意位置的()及括号内文字,最后在末尾统一加_发明专利列表_20240813.xls。”
它会调用re.sub(r'\(.*?\)', '', filename)精准剔除最内层括号内容,避免误删嵌套括号外的合法字符——这个细节值得注意。
方法二:简单字符串替换(适合无歧义场景)。比如:“把D:\英语音频中所有mp3文件名里的‘Track’替换成所在子文件夹的名字。”但这里有个坑:如果某个子文件夹名本身包含“Track”,这个替换会连带修改文件夹名部分,造成逻辑错乱。所以【务必确保子文件夹名称不含待替换关键词】。
一键撤回错误重命名(防翻车必备)
运行脚本后发现命名结果跟预期不一样?别急着删文件。先在原文件夹里创建一个log.txt,把ChatGPT生成的脚本中所有print(f"重命名:'{old}' 为 '{new}'")行复制进去,人工核对一下前后的映射关系。
然后再让ChatGPT根据log.txt反向生成一个“恢复脚本”:“根据以下重命名记录,把new文件名改回old文件名:……”它会输出带os.rename(new, old)的逆向代码,粘贴运行就能回滚——但前提是原始文件没有被覆盖或删除,否则神仙也救不回来。
