本文目录导读:

重要提示
在运行任何批量修改脚本之前,请务必备份您的文件夹或在测试目录中先试运行,以防误操作导致数据丢失。
Windows 批处理脚本 (.bat)
使用 Windows 自带的命令提示符或 PowerShell 脚本。
纯 cmd 批处理(简单替换)
场景:将所有文件夹名称中的 “旧词” 替换为 “新词”。
@echo off
setlocal enabledelayedexpansion
set "old=旧词"
set "new=新词"
for /d %%i in (*) do (
set "folder=%%i"
set "newFolder=!folder:%old%=%new%!"
if not "!folder!"=="!newFolder!" (
ren "%%i" "!newFolder!"
echo 已修改: %%i -^> !newFolder!
)
)
echo 完成!
pause
用法:将上述代码复制到记事本,保存为 rename.bat,放在目标文件夹上级目录双击运行。
PowerShell 脚本 (.ps1) —— 更强大
场景:添加前缀/后缀、替换、删除、按规则重命名。
# 1. 批量添加前缀 "Project_"
Get-ChildItem -Directory | Rename-Item -NewName { "Project_" + $_.Name }
# 2. 批量删除 "temp_" 前缀
Get-ChildItem -Directory | Where-Object { $_.Name -like "temp_*" } |
Rename-Item -NewName { $_.Name -replace "^temp_", "" }
# 3. 按正则表达式修改(例如将括号替换为横杠)
Get-ChildItem -Directory | Rename-Item -NewName { $_.Name -replace '\(', '-' -replace '\)', '' }
# 4. 将所有文件夹名改为小写(加 -WhatIf 先预览)
Get-ChildItem -Directory | Rename-Item -NewName { $_.Name.ToLower() } -WhatIf
用法:在目标文件夹中,右键 -> 在 Windows 终端 / PowerShell 中打开,粘贴上述命令执行。
macOS / Linux 终端脚本 (Shell)
利用 bash 或 zsh 的 rename 或 mv 命令。
使用 rename 命令(需先安装)
安装:brew install rename (macOS) / sudo apt install rename (Ubuntu/Debian)
# 将所有 "旧名" 替换为 "新名" rename 's/旧名/新名/' */ # 添加前缀 "2025_" rename 's/^/2025_/' */ # 添加后缀 "_backup" rename 's/$/_backup/' */ # 删除文件夹名中的空格(用下划线替换) rename 's/ /_/g' */
使用 find + for 循环(通用性最强)
# 在文件夹名前添加 "archive_"
for dir in */; do
mv "$dir" "archive_$dir"
done
# 删除文件夹名中的 "-副本" 后缀
for dir in */; do
newname=$(echo "$dir" | sed 's/-副本//g')
if [ "$dir" != "$newname" ]; then
mv "$dir" "$newname"
fi
done
Python 脚本(跨平台,最灵活)
适合复杂逻辑,根据文件内容、日期、序号批量重命名。
import os
# 要修改的文件夹路径
folder_path = "." # 当前目录,也可以改为绝对路径
# 示例1:批量添加 "已整理_" 前缀
for foldername in os.listdir(folder_path):
full_path = os.path.join(folder_path, foldername)
if os.path.isdir(full_path): # 确保是文件夹
new_name = "已整理_" + foldername
os.rename(full_path, os.path.join(folder_path, new_name))
print(f"已修改: {foldername} -> {new_name}")
# 示例2:按创建日期重命名(格式:YYYYMMDD_原名称)
import datetime
for foldername in os.listdir(folder_path):
full_path = os.path.join(folder_path, foldername)
if os.path.isdir(full_path):
# 获取文件夹创建时间
timestamp = os.path.getctime(full_path) # Linux用getmtime
date_str = datetime.datetime.fromtimestamp(timestamp).strftime("%Y%m%d")
new_name = f"{date_str}_{foldername}"
os.rename(full_path, os.path.join(folder_path, new_name))
# 示例3:批量编号(001, 002...)
count = 1
for foldername in os.listdir(folder_path):
full_path = os.path.join(folder_path, foldername)
if os.path.isdir(full_path):
new_name = f"{count:03d}_{foldername}" # 3位数字编号
os.rename(full_path, os.path.join(folder_path, new_name))
count += 1
用法:将代码保存为 rename.py,在终端运行 python rename.py。
图形化工具(无代码)
如果不想写脚本,推荐以下免费工具:
- Windows:PowerToys (PowerRename) (微软官方) 或 Bulk Rename Utility (功能极强)
- macOS:Name Mangler、Renamer
- 跨平台:Advanced Renamer、Ant Renamer
总结建议
| 需求 | 推荐方案 |
|---|---|
| Windows 简单替换 | .bat 批处理 |
| Windows 灵活替换 | PowerShell |
| macOS/Linux 常用 | rename 命令或 Shell 循环 |
| 复杂逻辑/跨平台 | Python 脚本 |
| 一次使用/不熟代码 | 图形化工具 (PowerToys, Bulk Rename) |
需要我帮您针对特定场景(如:统一加日期、清除特殊字符、按序号排序)定制一个具体脚本吗?