用户登录
个人主页 用户中心 我的订单 添加授权 管理授权
退出登录
用户登录 用户注册
欢迎来到 UC建站系统

Windows右键到PowerShell脚本三分钟批量改名3000张图,文件批量重命名五个层级效率差50倍

Windows右键重命名、PowerRename、Bulk Rename Utility、Total Commander、Python脚本,文件批量改名从最慢到最快有五个层级,大多数人停在第二层就以为够用了

去年给一个网站迁移图片库,3000多张图片文件名全是"IMG_20231015_143022.jpg"这种手机自动编号。要改成"产品分类-型号-角度-序号.jpg"的格式,而且每张图对应不同产品,改错一张整个页面的配图就乱了。同事说"我一个个F2改,三天应该能搞定",我打开PowerShell写了三行代码,三分钟跑完。

文件批量改名这件事,工具和方法的差距比大多数人大得多。同样是改1000个文件名,有人用一个下午手动敲,有人用PowerRename五分钟搞定,有人写个脚本十秒钟跑完。差的不是手速,是对"改名"这件事复杂度的认知——批量改名从来不是简单的"把A换成B",而是规则匹配、条件判断、元数据提取、编号序列生成的组合操作。

先给结论:五个层级的工具和能力对照

层级代表工具能做什么做不了什么适合谁
第一层F2逐个改 / 选中→右键重命名单个文件改名,或全选统一加序号后缀规则替换、正则、条件判断全不行文件不超过10个的场景
第二层PowerRename / Bulk Rename Utility搜索替换、正则、大小写、序号、扩展名修改基于文件内容的判断、跨文件夹、条件分支大多数日常批量改名需求
第三层Total Commander多文件重命名第二层全部能力 + 从文件导入新名称列表 + 计数器自定义格式复杂条件逻辑、跨目录批量需要从外部数据源生成文件名的场景
第四层BAT脚本 / PowerShell脚本跨文件夹、条件判断、循环、读取文件属性依赖外部数据(如Excel映射表)比较麻烦有一定命令行基础的站长
第五层Python脚本读取Excel映射表、调用API、EXIF信息提取、AI识别、任意复杂逻辑需要Python环境,有学习门槛文件量上千且规则复杂的场景

一、第一层:Windows自带的重命名,只适合文件数量一只手数得过来的场景

Windows自带两种重命名方式。一种是选中单个文件按F2,输入新名字回车。另一种是选中多个文件,右键→重命名,输入一个名字比如"产品图",系统会自动生成"产品图 (1).jpg""产品图 (2).jpg""产品图 (3).jpg"这样的序列。

第二种方法很多人用了很多年,觉得"这就是批量改名"。实际上它只能做一件事:统一前缀+自动编号后缀。你想把文件名里的"IMG_"替换成"产品图_",不行。你想把日期格式从"20231015"改成"2023-10-15",不行。你想把文件编号从1开始而不是从括号编号开始,不行。

1 - Windows右键到PowerShell脚本三分钟批量改名3000张图,文件批量重命名五个层级效率差50倍 - UC建站系统

适用场景:刚从手机导出的十几张照片,统一改成"旅行-序号.jpg"就够用了。超过50个文件,或者需要做任何形式的替换操作,这个方案就不行了。

二、第二层:PowerRename和Bulk Rename Utility,能满足90%的批量改名需求

PowerRename(微软PowerToys内置,免费)

PowerRename是微软PowerToys工具集里的一个组件,装完PowerToys后右键菜单会多一个"PowerRename"选项。选中要改名的文件,右键点它,弹出一个界面,左边是原始文件名预览,右边是改名后的预览。

它的核心能力是搜索替换+正则表达式。在"搜索"框里填要替换的内容,在"替换为"框里填新内容,支持用正则做更复杂的匹配。比如把"IMG_20231015_143022.jpg"改成"产品图_2023-10-15_001.jpg",用正则IMG_(\d{4})(\d{2})(\d{2})_(\d{6})匹配原文件名,替换为产品图_$1-$2-$3_再加一个自增计数器。

优点

  • 微软官方,安全可靠
  • 支持正则表达式
  • 实时预览改名效果
  • 支持撤销(集成Windows撤销)
  • 完全免费

短板

  • 不能跨文件夹批量操作
  • 没有条件判断(如果文件名包含A则改B)
  • 编号计数器格式不够灵活
  • 不能读取文件元数据(如EXIF)

适合

  • 单文件夹内文件统一改名
  • 替换文件名中的固定字符串
  • 统一加前缀/后缀
  • 修改扩展名

Bulk Rename Utility(免费,功能比PowerRename更全)

Bulk Rename Utility是第三方免费工具,界面看起来像飞机驾驶舱——密密麻麻的输入框和选项,但用熟了之后效率极高。它把改名操作拆成了十几个独立模块:替换、删除、添加前缀/后缀、编号、大小写转换、扩展名修改、正则、从文件导入新名称列表。

和PowerRename最大的区别是,Bulk Rename Utility可以同时叠加多个改名规则。比如你可以一次性完成:删除前5个字符 → 把"IMG"替换成"产品图" → 全部转小写 → 从001开始编号 → 把扩展名统一改成.jpg。PowerRename一次只能做一种操作。

还有一个很实用的功能:根据文件时间戳改名。选中一批文件,按创建时间或修改时间自动生成文件名,对于按日期整理照片或日志文件非常方便。PowerRename做不到这个。

三、第三层:Total Commander的批量重命名,从外部数据源导入新名称是杀手锏

Total Commander(简称TC)是老牌双窗口文件管理器,它的批量重命名功能(Ctrl+M)有一个其他工具没有的能力:从文本文件导入新文件名列表

这个功能在什么场景下有用?假设你有500张产品图片,每张需要改成对应的产品名称。你在Excel里已经整理好了"旧文件名→新文件名"的对应表。把新文件名那一列复制到一个纯文本文件里,一行一个名字,然后在TC里选中这500个文件,Ctrl+M打开批量改名窗口,点击"从文件加载名称",导入刚才的文本文件,TC会按顺序把文件名一一对应替换。

Total Commander批量改名的完整操作流程:

  1. 在Excel中整理好"旧文件名"和"新文件名"两列
  2. 把"新文件名"列复制,粘贴到一个新建的txt文件中,一行一个文件名
  3. 在TC中导航到目标文件夹,选中所有需要改名的文件
  4. 按Ctrl+M打开"多文件重命名工具"窗口
  5. 点击右上角的"从文件加载名称"图标(或菜单→编辑→从文件加载名称)
  6. 选择刚才保存的txt文件
  7. 预览窗口会显示新旧文件名的对应关系,确认无误后点击"开始"
  8. 全部改名完成,如果有重名冲突TC会提示

TC的计数器功能也比PowerRename灵活。可以设置起始数字、步长、位数(自动补零),还可以在计数器前后加固定文本。比如[C:3]表示从001开始的三位数计数器,产品图-[C:4]生成"产品图-0001.jpg""产品图-0002.jpg"这样的文件名。

四、第四层:BAT和PowerShell脚本,跨文件夹批量改名的分水岭

前面三层工具都有一个共同的限制:只能在一个文件夹内操作。如果你有50个子文件夹,每个里面都有需要改名的文件,PowerRename和TC都得一个一个文件夹进去操作。这时候脚本的优势就出来了。

BAT批处理:简单直接,适合固定规则的重复操作

BAT脚本适合"每次做同样的事"。比如你每周都要从某个系统导出一批报表文件,文件名格式固定,需要统一加日期前缀。写一个BAT,以后每次双击运行就行。

BAT批量改名:给当前文件夹所有jpg文件加"产品图_"前缀

@echo offsetlocal enabledelayedexpansionfor %%f in (*.jpg) do (set "filename=%%~nf"ren "%%f" "产品图_!filename!.jpg")echo 改名完成pause

BAT的局限也很明显:字符串处理能力弱,不支持正则表达式(除非调用第三方工具),复杂逻辑写起来很痛苦。所以大部分进阶用户会直接跳到PowerShell或Python。

PowerShell:Windows原生的脚本利器,递归遍历子文件夹是基本操作

PowerShell比BAT强大得多,支持正则表达式、管道操作、对象处理。递归遍历所有子文件夹只需要一行Get-ChildItem -Recurse

PowerShell:递归所有子文件夹,把所有"IMG_"开头的文件名改成"产品图_"

Get-ChildItem -Recurse -File -Filter "IMG_*" | ForEach-Object {$newName = $_.Name -replace '^IMG_', '产品图_'Rename-Item -Path $_.FullName -NewName $newName}

PowerShell:批量给所有子文件夹的jpg文件编号,从001开始

$counter = 1Get-ChildItem -Recurse -File -Filter "*.jpg" | ForEach-Object {$newName = "产品图_{0:D3}{1}" -f $counter, $_.ExtensionRename-Item -Path $_.FullName -NewName $newName$counter++}

五、第五层:Python脚本,处理最复杂场景的终极方案

当前面所有工具都解决不了的时候,Python是最后的答案。什么场景需要出动Python?

  • 需要读取Excel映射表来改名(500张图对应500个产品名,存在Excel里)
  • 需要读取图片EXIF信息,按拍摄日期+相机型号生成文件名
  • 需要调用翻译API,把中文文件名批量翻译成英文
  • 需要从文件内容里提取信息作为文件名(比如读取HTML的title标签)
  • 改名规则里有复杂的条件分支(如果文件大于1MB加后缀_L,小于1MB加后缀_S)

Python:读取Excel映射表,按对应关系批量改名(站长最常用的场景)

import osimport pandas as pd# 读取Excel映射表(A列旧文件名,B列新文件名)df = pd.read_excel('rename_map.xlsx')folder = r'C:\images'for _, row in df.iterrows():old_path = os.path.join(folder, row['旧文件名'])new_path = os.path.join(folder, row['新文件名'])if os.path.exists(old_path):os.rename(old_path, new_path)print(f'✅ {row["旧文件名"]} → {row["新文件名"]}')else:print(f'⚠️ 文件不存在: {row["旧文件名"]}')print('全部改名完成')

Python:读取图片EXIF拍摄日期,生成"2023-10-15_001.jpg"格式文件名

2 - Windows右键到PowerShell脚本三分钟批量改名3000张图,文件批量重命名五个层级效率差50倍 - UC建站系统

import osfrom PIL import Imagefrom PIL.ExifTags import TAGSfrom datetime import datetimefolder = r'C:\photos'counter = 1for filename in sorted(os.listdir(folder)):if not filename.lower().endswith(('.jpg', '.jpeg', '.png')):continuefilepath = os.path.join(folder, filename)try:img = Image.open(filepath)exif = img._getexif()if exif:for tag_id, value in exif.items():tag = TAGS.get(tag_id, tag_id)if tag == 'DateTimeOriginal':date = datetime.strptime(value, '%Y:%m:%d %H:%M:%S')new_name = f"{date.strftime('%Y-%m-%d')}_{counter:03d}.jpg"os.rename(filepath, os.path.join(folder, new_name))counter += 1breakexcept:print(f'跳过(无法读取EXIF): {filename}')

六、按你的场景选工具,不用把五个层级全学一遍

少于50个文件,简单统一改名

Windows自带选中→右键重命名就行。文件名统一前缀+自动编号,不需要装任何工具。

单文件夹内,需要替换/正则/编号

装PowerToys,用PowerRename。微软官方,实时预览,支持正则,足够覆盖大部分日常需求。免费。

改名规则复杂,需要同时叠加多个操作

用Bulk Rename Utility。免费,功能最全,一个界面同时完成替换+编号+大小写+扩展名修改。

有Excel新旧名称对照表,需要批量套用

用Total Commander的"从文件加载名称"功能,或者写Python脚本读Excel。TC更简单,Python更灵活。

跨文件夹批量改名,子文件夹很多

PowerShell脚本,Get-ChildItem -Recurse遍历所有子文件夹。GUI工具在这个场景下都不好使。

需要读EXIF、调API、读Excel、复杂条件

写Python脚本。pandas读Excel、PIL读EXIF、requests调API,三行代码组合能解决GUI工具永远做不到的事。

七、网站站长常见的三个改名场景,每个都有最优解法

场景1图片文件名SEO优化:把"IMG_0001.jpg"改成有意义的描述

图片文件名是SEO的一部分,百度图片搜索会读取文件名作为判断依据。"IMG_0001.jpg"和"华为mate60-黑色-正面图.jpg",后者被搜索匹配到的概率高几十倍。

最优解:PowerRename,选中所有图片,用正则或搜索替换把无意义前缀去掉,换成产品名+角度描述。如果图片量大且每张对应不同产品,用TC从Excel导入名称列表。批量改完文件名后,记得同步更新HTML里的img src引用——这个可以用代码编辑器的全局搜索替换来做。

场景2多站模板文件统一改名:CSS/JS文件名加版本号防缓存

更新了CSS文件但用户浏览器缓存了旧版本,导致页面样式异常。标准做法是改完CSS后给文件名加版本号:style.css → style_v2.css。多个站点各自有独立的CSS文件,需要批量加版本号。

最优解:PowerShell脚本遍历所有站点目录,找到style.css和main.js,在扩展名前插入版本号。同时写一个正则把HTML里的引用路径也替换掉。或者直接用构建工具(如Webpack/Vite)在打包时自动生成带哈希的文件名,一劳永逸。

场景3从CMS导出的文章HTML文件改名:按文章标题生成文件名

从WordPress导出的一批文章,文件名是post-id.html或随机数字.html,需要改成有意义的英文/拼音文件名,方便SEO和管理。手工改100篇文章的文件名是不可能的。

最优解:Python脚本,用BeautifulSoup解析每个HTML文件,提取title标签的内容,转成拼音或英文slug作为文件名。规则是:中文标题→转拼音(用pypinyin库)→空格替换为连字符→全部小写→加.html后缀。100个文件十秒跑完。

八、几个改名操作中容易被忽略的细节,不注意可能翻车

· 改名之前先备份,或者用预览功能确认

PowerRename和Bulk Rename Utility都有实时预览窗口,改之前看一眼新旧文件名对照。如果是用脚本改名,先在测试文件夹跑一遍确认逻辑正确。批量操作没有Ctrl+Z,一旦出错就是几百个文件。

· 扩展名不要随便改,改了之后关联程序可能打不开

把.jpg改成.png不会让图片变成PNG格式,只会让系统用错误的程序去打开它。除非你确实需要改扩展名(比如.txt改成.html),否则改名时只动文件名主体,保留原始扩展名。

· 文件名字符限制:Windows路径+文件名最长260个字符

在深层子文件夹里改名时容易超出260字符限制,操作会直接失败。如果文件路径已经很长了,改名时尽量用短文件名。PowerShell和Python可以开启长路径支持绕过这个限制。

· 改名后要同步更新所有引用这个文件的地方

这是最容易忘的一步。图片改名了,HTML里的<img src>还指向旧文件名,页面就全是裂图。CSS改名了,HTML里的<link href>没改,样式就丢了。改名完成后一定要用代码编辑器(VS Code、Sublime)全局搜索旧文件名,替换为新文件名。

最后说两句

文件批量改名这个技能,投入产出比极高。学一个PowerRename用二十分钟,以后每次批量改名从半小时缩到五分钟,一年下来省的时间够你学完Python基础了。不需要五个层级全掌握,根据自己的文件量和改名复杂度选一层就够——大部分人停在第二层(PowerRename/Bulk Rename Utility)已经能解决日常95%的需求。

唯一值得额外投入的是PowerShell的Get-ChildItem -Recurse + Rename-Item组合,因为"跨文件夹批量操作"是GUI工具的硬伤,而PowerShell解决这个只需要一行命令。

核心要点:

  • 少于50个文件→Windows自带右键重命名,零门槛
  • 单文件夹内需要搜索替换/正则/编号→PowerRename(免费、微软官方、实时预览)
  • 需要同时叠加多个改名规则→Bulk Rename Utility(免费、功能最全的GUI工具)
  • 有Excel新旧名称对照表→Total Commander从文件导入名称列表
  • 跨文件夹批量改名→PowerShell的Get-ChildItem -Recurse
  • 读EXIF/调API/读Excel/复杂条件逻辑→Python脚本
  • 改名之前先预览/备份,扩展名不要乱改,注意260字符路径限制
  • 改完文件名后记得全局搜索替换所有引用旧文件名的地方

相关推荐
在线客服
👇找客服拿折扣
QQ咨询&售后
在线时间
11:00 ~ 5:30
QQ:3155555535
👇联系QQ
👇联系WX
首页 程序 帮助 登录