怎么用脚本批量重命名文件

wen 实用脚本 1

效率革命:三步学会用脚本批量重命名文件,告别手动点击的折磨


目录导读

  1. 为什么你需要脚本重命名?(场景痛点与效率对比)
  2. 基础认知:批处理 vs Python vs 第三方工具,哪个适合你?
  3. 实战演练:Windows批处理(.bat)与macOS/Linux Shell脚本
  4. 进阶技巧:Python脚本实现“智能识别+规则替换”(含正则表达式)
  5. 高频问答:重命名报错、乱码、权限问题怎么办?
  6. 安全警示:防止脚本误删文件的“三保险”策略

为什么你需要脚本重命名?

如果你曾为整理几百张“IMG_20231001_xxxx.jpg”照片、几十个“新建文档(2).docx”或批量下载的PDF发愁,手动按F2一个个改名的体验就像酷刑。人工操作1分钟改5个文件,而脚本1秒处理500个,更重要的是,脚本能实现复杂规则——比如自动提取文件内时间戳、按序号补零、删除特定字符,这是手动操作无法做到的。

怎么用脚本批量重命名文件


基础认知:三种方案对比

方案 适用人群 学习成本 灵活性
Windows批处理(.bat) 小白、临时批量
Shell脚本(Bash/Zsh) Mac/Linux用户
Python脚本(os模块) 程序员、复杂需求

原则:能写一行命令解决,就别写十行代码;能用原生工具,就别装额外软件。


实战演练:从零写一个安全的批量改名脚本

场景:将当前文件夹下所有 report_2023.txt 改为 年度报告_2023.txt

① Windows批处理(新建 rename.bat,右键编辑粘贴):

@echo off
setlocal enabledelayedexpansion
for %%f in (*.txt) do (
    set "name=%%~nf"
    set "name=!name:report=年度报告!"
    ren "%%f" "!name!%%~xf"
)
echo 完成!
pause

要点set 命令配合 !变量! 实现变量延迟,避免括号嵌套的解析错误。

② macOS/Linux Shell(终端输入):

for f in report_*.txt; do mv "$f" "${f/report/年度报告}"; done

核心${变量/旧/新} 语法进行原地替换,无需循环体也能批量处理。

③ 高级需求:用Python一键完成“去空格+加日期前缀”

import os, datetime
today = datetime.date.today()
for fn in os.listdir('.'):
    if fn.endswith('.jpg'):
        new_name = f"{today}_{fn.replace(' ', '_')}"
        os.rename(fn, new_name)
print("处理完成")

进阶技巧:正则表达式让你“指哪打哪”

痛点:散落文件命名为 IMG_8754.JPGIMG_8755.JPG,你想统一改成 假期_001.jpg

Python正则代码

import re
for fn in os.listdir('.'):
    if re.search(r'IMG_\d+\.JPG', fn):
        num = re.findall(r'\d+', fn)[0]
        os.rename(fn, f"假期_{int(num):03d}.jpg")

解读re.findall 提取数字,03d 自动补零到三位数,这就是脚本区别于傻瓜工具的最大优势——按需定制规则


高频问答:你可能会踩的坑

Q1:运行.bat文件后,中文文件名变成乱码? A:在批处理文件开头添加 chcp 65001 永久切换UTF-8编码,另存为ANSI编码会保留中文。

Q2:改错名了,能一键撤销吗? A:防呆设计——脚本执行前,先执行 echo 预览所有改动命令,确认无误再删除“预览模式”运行正式版。

Q3:提示“另一个程序正在使用此文件”? A:用 tasklist | findstr "文件名" 查出占用进程(如WPS缓存),强制关闭后重试。

Q4:macOS的SIP(系统完整性保护)阻止脚本修改系统目录文件? A:把脚本权限改为 chmod 755 script.sh,且目标文件放在用户文件夹(如~/Documents)下即可。

Q5:如何让脚本对不同扩展名(.txt/.jpg/.pdf)分别加不同后缀? A:多条件判断 if fn.endswith('.txt'): prefix='文本'elif fn.endswith('.jpg'): prefix='图片' 再拼接。


安全警示:三条铁律防止“手滑悲剧”

  1. 干跑模式(Dry Run):所有脚本先用 echo 代替 rename/ mv 命令,输出“如果执行会变成什么文件名”,确认无误后去掉echo
  2. 版本回滚备份:批量操作前,用 zip -r backup.zip *.txt 打包原文件。
  3. 避免静默覆盖:Windows 批处理加 if exist "新名字" (echo 跳过) 判断,Linux用 -n 参数(mv -n 旧 新)防止覆盖。

脚本重命名不是程序员的专利,而是现代办公的数字扫帚,今天你用10分钟学会批处理,明天就能省下100小时加班,从最简单的.bat开始,慢慢探索Python的正则世界——你会发现,真正的“懒人”都是靠脚本推动进步的,下次面对数百个乱糟糟的文件名,别慌,打开终端,敲下第一行代码吧。

抱歉,评论功能暂时关闭!