本文目录导读:

我来介绍几种批量重命名文件的方法,从简单到复杂:
PowerShell (Windows)
示例1:添加前缀
Get-ChildItem "C:\path\to\files\*.txt" |
Rename-Item -NewName { "new_" + $_.Name }
示例2:替换文件名中的文本
Get-ChildItem "C:\path\to\files\*" |
Rename-Item -NewName { $_.Name -replace "oldtext","newtext" }
示例3:按序号重命名
$i=1
Get-ChildItem "*.jpg" | ForEach-Object {
Rename-Item $_ -NewName ("photo_{0:D3}.jpg" -f $i++)
}
Bash/Linux/macOS
示例1:批量添加时间戳
for f in *.jpg; do
mv "$f" "backup_$(date +%Y%m%d)_$f"
done
示例2:替换空格为下划线
for f in *; do
mv "$f" "${f// /_}"
done
示例3:根据序号重命名
i=1
for f in *.txt; do
mv "$f" "file_$(printf "%03d" $i).txt"
((i++))
done
Python (跨平台)
import os
# 批量重命名
path = r"C:\your\folder"
files = [f for f in os.listdir(path) if f.endswith(".txt")]
for i, filename in enumerate(files, 1):
new_name = f"document_{i:03d}.txt"
os.rename(
os.path.join(path, filename),
os.path.join(path, new_name)
)
常用场景模板
场景1:按日期+序号重命名
# Bash
i=1
for f in *.pdf; do
mv "$f" "report_$(date +%Y%m%d)_$(printf "%02d" $i).pdf"
((i++))
done
场景2:批量转换大小写
# 转为小写(Bash)
for f in *; do
mv "$f" "$(echo $f | tr 'A-Z' 'a-z')"
done
场景3:提取/删除特定部分
# 删除文件名前5个字符(Bash)
for f in *; do
mv "$f" "${f:5}"
done
使用专业工具
如果你不想写脚本,推荐:
- Windows: Bulk Rename Utility(免费)
- macOS: Name Mangler, A Better Finder Rename
- 跨平台: Advanced Renamer
注意事项
- 备份!备份!备份! - 误操作可能无法恢复
- 先用小范围文件测试
- 注意文件名冲突问题
- 包含特殊字符时要使用引号
需要针对特定场景的脚本吗?告诉我想做什么样的重命名,我可以提供更具体的代码。