怎样用脚本批量重命名文件?

wen 实用脚本 3

本文目录导读:

怎样用脚本批量重命名文件?

  1. PowerShell (Windows)
  2. Bash/Linux/macOS
  3. Python (跨平台)
  4. 常用场景模板
  5. 使用专业工具
  6. 注意事项

我来介绍几种批量重命名文件的方法,从简单到复杂:

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

注意事项

  1. 备份!备份!备份! - 误操作可能无法恢复
  2. 先用小范围文件测试
  3. 注意文件名冲突问题
  4. 包含特殊字符时要使用引号

需要针对特定场景的脚本吗?告诉我想做什么样的重命名,我可以提供更具体的代码。

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