本文目录导读:

- 方法一:使用 Python 脚本(跨平台,推荐)
- 方法二:使用 Bash 脚本(Linux/Mac)
- 方法三:使用 PowerShell(Windows)
- 方法四:使用专门的软件(图形界面)
- 使用注意事项
- 推荐工作流程
可以用脚本批量重命名音乐文件,以下是几种常见的方法,适用于不同操作系统和需求:
使用 Python 脚本(跨平台,推荐)
基础版本:按序号重命名
import os
folder_path = "/path/to/your/music" # 修改为你的音乐文件夹路径
counter = 1
for filename in os.listdir(folder_path):
if filename.endswith((".mp3", ".flac", ".wav", ".m4a")): # 支持的音乐格式
old_path = os.path.join(folder_path, filename)
new_filename = f"track_{counter:03d}_{filename}" # track_001_song.mp3
new_path = os.path.join(folder_path, new_filename)
os.rename(old_path, new_path)
counter += 1
进阶版本:从ID3标签读取信息重命名
需要安装 mutagen 库:pip install mutagen
import os
from mutagen.easyid3 import EasyID3
from mutagen.flac import FLAC
from mutagen.mp4 import MP4
def get_audio_info(filepath):
try:
if filepath.endswith('.mp3'):
audio = EasyID3(filepath)
artist = audio.get('artist', ['未知'])[0]
title = audio.get('title', ['未知'])[0]
elif filepath.endswith('.flac'):
audio = FLAC(filepath)
artist = audio.get('artist', ['未知'])[0]
title = audio.get('title', ['未知'])[0]
elif filepath.endswith('.m4a'):
audio = MP4(filepath)
artist = audio.get('\xa9ART', ['未知'])[0]
title = audio.get('\xa9nam', ['未知'])[0]
else:
return None, None
return artist, title
except:
return None, None
folder_path = "/path/to/your/music"
for filename in os.listdir(folder_path):
if filename.startswith('.'): # 跳过隐藏文件
continue
filepath = os.path.join(folder_path, filename)
if os.path.isfile(filepath):
artist, title = get_audio_info(filepath)
if artist and title:
# 移除非法字符
safe_artist = "".join(c for c in artist if c.isalnum() or c in ' _-')
safe_title = "".join(c for c in title if c.isalnum() or c in ' _-')
file_ext = os.path.splitext(filename)[1]
new_filename = f"{safe_artist} - {safe_title}{file_ext}"
new_path = os.path.join(folder_path, new_filename)
if not os.path.exists(new_path): # 避免覆盖
os.rename(filepath, new_path)
print(f"重命名: {filename} -> {new_filename}")
使用 Bash 脚本(Linux/Mac)
批量去除文件名的特殊字符
#!/bin/bash
cd /path/to/your/music
for file in *.mp3 *.flac *.wav; do
# 将空格替换为下划线,移除特殊字符
newname=$(echo "$file" | sed 's/ /_/g' | sed 's/[^a-zA-Z0-9._-]//g')
if [ "$file" != "$newname" ]; then
mv "$file" "$newname"
echo "重命名: $file -> $newname"
fi
done
使用 PowerShell(Windows)
统一添加前缀
$folder = "C:\Users\YourName\Music"
Get-ChildItem -Path $folder -Include *.mp3, *.flac, *.wav -Recurse | ForEach-Object {
$counter = [int]($counter + 1)
$newName = "song_$($counter.ToString('000'))_$($_.Name)"
Rename-Item -Path $_.FullName -NewName $newName
}
使用专门的软件(图形界面)
MusicBee(Windows)
- 内置批量重命名功能
- 右键选择文件 → 「发送到」→ 「文件重命名」
- 支持多种命名模板:
%artist% - %title%、%track% - %title%
Kid3(跨平台)
- 开源的音乐标签编辑器
- 支持基于ID3标签自动重命名文件
- 支持正则表达式批量替换
高级重命名工具
- Bulk Rename Utility(Windows)
- Renamer(Mac)
- GPRename(Linux)
使用注意事项
- 先备份:重命名前最好复制一份或先测试几个文件
- 测试运行:先用
--dry-run参数或只打印不实际重命名 - 文件名规范:
- 避免使用特殊字符:
/ \ : * ? " < > | - 系统文件名长度限制(Windows 255字符,Linux/Mac 255字符)
- 避免使用特殊字符:
- 批量处理前检查:
- 是否有重复的文件名
- 音乐文件是否损坏
- ID3标签信息是否完整
推荐工作流程
- 先用工具修复/补全ID3标签
- 使用ID3标签信息进行重命名
- 建议格式:
艺术家 - 专辑 - 曲号 - 歌名.mp3 - 最后统一规范化(大小写、空格等)
需要了解某个具体方法的更多细节吗?