一款跨平台文件批量重命名工具:支持灵活插入、安全校验、日志追溯
推荐一款跨平台文件批量重命名工具:支持灵活插入、安全校验、日志追溯
引言:为什么需要这款批量重命名工具?
日常工作 / 生活中,我们经常遇到需要批量处理文件名称的场景:
-
旅游回来,手机照片命名是
IMG_001.jpgIMG_002.jpg,想统一添加前缀「2024 云南旅游_」; -
项目文档分类,需要给所有设计稿文件夹后缀加上「_V2.1」版本号;
-
整理资料时,想在文件名称中间插入分类标识(如
合同_重要_202405.txt)。
手动重命名几十上百个文件效率极低,而市面上的重命名工具要么跨平台兼容性差,要么功能单一(只支持前缀 / 后缀)。因此,我开发了这款跨平台、高灵活、高安全的批量重命名工具,支持 Windows/macOS/Linux,可自定义 “开头 / 末尾 / 中间” 插入内容,还自带多重校验和日志功能。
一、工具核心亮点
1. 跨平台无缝兼容
自动识别当前操作系统(Windows/macOS/Linux),适配不同系统的文件名称非法字符规则:
-
Windows 禁止:
\ | ? * -
macOS 禁止:
:/ -
Linux 禁止:
/
输入自定义内容时会自动过滤非法字符,无需手动处理。
2. 三种重命名模式,覆盖所有场景
| 模式 | 适用场景 | 路径支持 |
| ---- | ---------------------------- | ---------------------------------------------- |
| 仅文件夹 | 批量修改文件夹名称(如项目版本号更新) | 单路径、多路径(逗号分隔)、通配符(如 ./project/*_old) |
| 仅文件 | 批量修改文件名称(如照片、文档、代码文件) | 同上,且保留文件扩展名(如 .txt .jpg) |
| 所有内容 | 一次性修改指定目录下所有文件 + 文件夹(不递归子目录) | 单个根文件夹路径(如 C:\Users\Desktop 或 ~/Documents) |
3. 灵活的内容插入方式
支持三种插入位置,满足多样化需求:
-
开头:在原名称前添加内容(如
IMG_001.jpg→2024旅游_IMG_001.jpg); -
末尾:在原名称后添加内容(如
设计方案.docx→设计方案_V2.docx); -
中间:在指定索引位置插入内容(如
合同2024.txt→合同_重要_2024.txt,索引 2 插入)。
4. 多重安全校验,避免操作失误
-
路径校验:检查路径是否存在、是否为目标类型(文件 / 文件夹)、是否有访问权限;
-
重复检测:预览时标记重复的新名称,执行时自动跳过重复项;
-
非法字符过滤:自动过滤当前系统不允许的字符,避免重命名失败;
-
预览功能:执行前展示所有重命名计划,确认无误后再操作。
5. 操作日志追溯
支持将重命名记录保存到 rename_log.txt,包含:操作时间、操作人、目标类型、插入位置、原路径、新路径,便于后续核对。
二、快速上手使用教程
1. 环境准备
-
运行环境:Python 3.6+(兼容 3.6\~3.11 版本);
-
依赖:无需额外安装第三方库(使用 Python 标准库
ossyspathlibretime)。
2. 使用步骤(以 “给照片添加前缀” 为例)
步骤 1:下载并运行脚本
将代码保存为 batch_rename.py,打开终端 / 命令行,执行:
python batch\_rename.py
启动后会显示工具界面:
\============================================================
          跨平台文件/文件夹批量重命名工具          
\============================================================
步骤 2:选择重命名模式
假设需要批量修改照片文件,选择模式 2(仅重命名文件):
【请选择操作模式】
1 - 仅重命名文件夹(单/多/通配符)
2 - 仅重命名文件(单/多/通配符)
3 - 重命名指定路径下的所有文件+所有文件夹(不递归)
请输入数字(1/2/3):2
步骤 3:输入待重命名路径
照片存放在 C:\Users\XXX\Pictures\云南旅游,支持通配符路径(匹配所有 .jpg 照片):
【第一步】请输入待重命名的文件路径(支持:
  1\. 单路径(绝对/相对)
  2\. 多路径(逗号分隔)
  3\. 通配符路径(如 ./test/\*)
请输入文件路径:C:\Users\XXX\Pictures\云南旅游\\\*.jpg
步骤 4:选择插入位置
需要在照片名称开头添加前缀,选择 “开头”:
【第二步】请选择添加内容的位置(开头/末尾/中间):开头
步骤 5:输入自定义内容
输入前缀「2024 云南旅游_」,工具会自动过滤非法字符(若有):
【第三步】请输入需要添加的自定义内容:2024云南旅游\_
步骤 6:预览并确认执行
工具会展示所有待重命名文件的预览效果,确认无误后输入 Y 执行:
【第四步】重命名预览(共15个目标):
\------------------------------------------------------------
✅  \[file] C:\Users\XXX\Pictures\云南旅游\IMG\_001.jpg → 2024云南旅游\_IMG\_001.jpg
✅  \[file] C:\Users\XXX\Pictures\云南旅游\IMG\_002.jpg → 2024云南旅游\_IMG\_002.jpg
...
\------------------------------------------------------------
是否确认执行重命名操作?(Y/N):Y
步骤 7:查看结果并保存日志
执行完成后会显示统计结果,可选保存日志:
\============================================================
执行完成!总计:15 | 成功:15 | 失败:0
\============================================================
是否保存操作日志到本地?(Y/N):Y
操作日志已保存到 C:\Users\XXX\rename\_log.txt
3. 中间插入模式示例(给文件名称中间加标识)
若需要将 合同202405.txt 改为 合同_重要_202405.txt,步骤如下:
-
模式选择:2(仅文件);
-
路径:
C:\Users\XXX\Documents\合同202405.txt; -
插入位置:中间;
-
工具会展示示例索引:
合同202405的索引 2 对应字符「2」,输入索引 2; -
自定义内容:
_重要_; -
预览效果:
合同_重要_202405.txt,确认执行即可。
三、核心代码解析(适合开发者参考)
工具的核心设计围绕 “兼容性、安全性、灵活性” 展开,以下是关键模块的设计思路:
1. 跨平台适配模块
\# 定义不同系统的非法字符正则
ILLEGAL\_CHARS = {
    'windows': r'\[?\*]',
    'macos': r'\[:/]',
    'linux': r'\[/]'
}
def get\_os\_type() -> str:
    if sys.platform.startswith('win'):
        return 'windows'
    elif sys.platform.startswith('darwin'):
        return 'macos'
    else:
        return 'linux'
通过 sys.platform 识别系统,结合正则过滤非法字符,确保生成的新名称符合当前系统规则。
2. 路径处理模块
核心函数 get_target_list() 支持多路径、通配符解析:
-
多路径:通过逗号分割字符串,逐个校验路径合法性;
-
通配符:使用
pathlib.Path.glob()匹配目标文件 / 文件夹; -
去重:通过集合去重(字典转元组后去重,再转回字典),避免重复处理同一目标。
3. 新名称生成模块
def generate\_new\_name(target: Dict, position: str, custom\_content: str, insert\_index: int = 0) -> str:
    if target\['type'] == 'folder':
        \# 文件夹直接处理完整名称
        original\_name = target\['path'].name
        \# 开头/末尾/中间插入逻辑
    else:
        \# 文件保留扩展名,仅处理主名称
        original\_stem = target\['path'].stem
        original\_suffix = target\['path'].suffix
        \# 生成新主名称后拼接扩展名
区分文件和文件夹,文件保留扩展名是关键设计(避免修改后文件无法打开),中间插入时自动处理索引越界(默认插入到名称中间)。
4. 安全校验模块
-
路径权限校验:通过创建临时文件(文件夹)或读取文件(文件)验证权限;
-
重复名称检测:通过
Path.exists()检查新名称是否已存在; -
输入校验:过滤空路径、空自定义内容、非法索引,引导用户输入有效信息。
四、常见问题与解决方案
1. 路径输入后提示 “路径不存在”?
-
检查路径是否正确(绝对路径建议直接复制粘贴,避免手动输入错误);
-
相对路径需以当前终端运行目录为基准(可通过
pwd/cd命令确认); -
通配符路径需确保父目录存在(如
./test/*需先确认./test文件夹存在)。
2. 重命名失败提示 “权限不足”?
-
Windows:关闭目标文件 / 文件夹的占用(如打开的文件夹、正在编辑的文件);
-
macOS/Linux:在终端执行
chmod +rwx 目标路径赋予读写权限。
3. 自定义内容被过滤后为空?
-
输入的内容包含当前系统的非法字符(如 Windows 输入
<>),且无其他有效字符; -
解决方案:修改自定义内容,避免使用系统非法字符。
4. 中间插入模式的索引怎么填?
-
索引从 0 开始,例如名称「合同 2024」的索引分布:0→合、1→同、2→2、3→0、4→2、5→4;
-
输入索引超过名称长度时,工具会自动改为 “名称长度 //2”(中间位置)。
五、工具扩展方向(可选)
如果需要更复杂的功能,可以基于现有代码扩展:
-
支持递归处理子目录(在
get_target_list()中添加rglob()遍历); -
增加 “替换名称” 功能(支持正则替换原名称中的字符);
-
支持批量修改扩展名(如将所有
.jpg改为.png); -
图形化界面(使用
tkinter或PyQt封装交互逻辑); -
支持自定义日志保存路径和格式。
总结
这款批量重命名工具兼顾了 “易用性” 和 “功能性”,无需复杂配置,直接运行即可使用,同时通过多重校验确保操作安全,跨平台特性满足不同系统用户的需求。无论是日常文件整理,还是工作中的批量处理场景,都能大幅提升效率。
如果使用过程中遇到问题,或有新的功能需求,欢迎在评论区留言交流!
个人矩阵
抖音账号:从 0 至 1(日常分享实操、效率工具教程)
微信公众号:从 0 至 1(可通过该渠道获取完整代码包及EXE程序)
博客网站:www.from0to1.cn(持续更新实战教程、技术干货内容)
GitHub账号:https://github.com/mtnljbydd(开源更多实用工具脚本及项目工程)
文章标题:一款跨平台文件批量重命名工具:支持灵活插入、安全校验、日志追溯
文章链接:https://www.from0to1.cn/inspiration-coding/ykkptwjplcmmgj-zclhcr-aqjy-rzzs.html
本站文章均为原创,未经授权请勿用于任何商业用途
如果觉得文章对您有用,请随意打赏。
您的支持是我们继续创作的动力!
微信扫一扫
支付宝扫一扫