实用脚本能批量改名吗?

wen 实用脚本 9

本文目录导读:

实用脚本能批量改名吗?

  1. 基础场景:通用逻辑
  2. Windows 脚本
  3. Linux / macOS 脚本
  4. 免安装的图形化工具(适合新手)
  5. 总结建议

当然可以!批量改名是命令行脚本和编程语言非常擅长的任务,我为你提供几种实用脚本方案,覆盖 Windows(cmd/PowerShell)和 Linux/macOS(bash)环境。

基础场景:通用逻辑

任何批量改名脚本的核心逻辑都是:

  1. 模式匹配:找到你想要改名的文件(所有 .jpg 文件,或者名字包含 “2024” 的文件)。
  2. 名称转换:定义如何修改旧文件名(添加前缀、替换文字、改变扩展名、按顺序编号)。
  3. 执行改名:运行脚本。

⚠️ 重要警告:批量改名有风险。一定要先在测试文件夹或使用 -WhatIf(PowerShell)或 echo(bash)预览结果,确认无误后再执行。


Windows 脚本

方法 A:使用 PowerShell(最推荐,功能最强)

PowerShell 是现代 Windows 系统自带的脚本语言。

场景 1:在文件名中添加统一的日期前缀 想要把当前文件夹中所有 .txt 文件的名字前都加上 “Report2025”。

Get-ChildItem -Path ".\*.txt" | Rename-Item -NewName { "Report_2025_" + $_.Name }
  • Get-ChildItem 获取文件列表,Rename-Item 负责改名。

场景 2:替换文件名中的特定文字 想要把所有文件名中的 “old_project” 替换为 “new_project”。

Get-ChildItem -Path "*" -File | Where-Object {$_.Name -like "*old_project*"} | 
Rename-Item -NewName { $_.Name -replace "old_project", "new_project" }
  • 这是一个非常强大的模式,可以用正则表达式实现复杂替换。

场景 3:批量添加序号(照片01.jpg, 照片02.jpg) 想要给当前文件夹中所有 .jpg 文件按顺序编号。

$i = 1
Get-ChildItem -Path "*.jpg" | Sort-Object Name | ForEach-Object {
    $newName = "照片{0:D2}.jpg" -f $i
    Rename-Item -Path $_.FullName -NewName $newName
    $i++
}
  • {0:D2} 是格式化字符串,D2 表示两位数,编号从 01, 02... 到 99。

预览命令(安全第一) 只需在 Rename-Item 后加上 -WhatIf,脚本就会只显示将要改的名字,而不真正执行。

Rename-Item -NewName { "Report_2025_" + $_.Name } -WhatIf

方法 B:使用命令提示符 (cmd)

历史较为悠久,语法较原始,不推荐处理复杂的文件名(可能包含空格)。

# 为所有txt文件添加前缀
setlocal enabledelayedexpansion
for %%f in (*.txt) do (
    set "filename=%%f"
    ren "!filename!" "prefix_!filename!"
)

Linux / macOS 脚本

使用 Bash 和 rename 命令(最推荐)

rename 命令有两种常用版本:Perl 版本 (最常见) 和 util-linux 版本。Perl 版本功能极其强大,如果你的系统没有,可以安装:

  • Ubuntu/Debian: sudo apt install rename
  • macOS (使用 Homebrew): brew install rename

场景 1:将所有 .jpeg 扩展名改为 .jpg

rename 's/\.jpeg$/.jpg/' *.jpeg

场景 2:将文件名中的空格替换为下划线

rename 's/ /\_/g' *

场景 3:将所有文件名改为小写

rename 'y/A-Z/a-z/' *

场景 4:在文件名前面添加日期前缀

for file in *.txt; do mv "$file" "Report_2025_$file"; done

场景 5:批量添加序号

i=1; for file in *.jpg; do mv "$file" "$(printf "照片_%02d.jpg" $i)"; ((i++)); done
  • %02d 表示两位数的序号。

预览命令(安全第一)rename 命令中加上 -n 参数,在 mv 命令前加上 echo

# 预览 rename 操作
rename -n 's/ /_/g' *
# 预览 mv 操作
for file in *.txt; do echo mv "$file" "Report_2025_$file"; done

免安装的图形化工具(适合新手)

如果你觉得脚本有点复杂,这些免费工具也能批量改名:

  • Advanced Renamer (Windows): 功能非常强大,几乎能处理所有改名需求,免费使用。
  • PowerRename (Windows): 微软官方出品,集成在 PowerToys 工具集中,简洁好用。
  • A Better Finder Rename (macOS): Mac 平台的首选,功能全面。
  • Renamer (macOS): 另一个不错的 Mac 工具。

总结建议

你的需求 推荐方案
简单改名,不想写代码 PowerToys PowerRename (Windows)Advanced Renamer
日常办公,自动化处理 PowerShell 脚本 (Windows)rename 命令 (Linux/macOS)
需要复杂正则替换 rename (Perl版本)PowerShell -replace
需要按 EXIF 日期等改照片名 Advanced Renamer 或编写 Python 脚本 (使用 exiftool)

最核心的忠告:第一次使用时,务必先预览!先用小文件夹测试,确认效果满意后,再大规模应用。

如果你有具体的改名需求(把 IMG_1234.jpg 改为 2025-01-15_北京旅行.jpg,或者把 [Artist]-Song.mp3 改为 Song.mp3),欢迎提供具体例子,我可以为你精确写出对应的脚本。

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