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

wen 实用脚本 3

本文目录导读:

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

  1. 方法一:使用 Python 脚本(跨平台,推荐)
  2. 方法二:使用 Bash 脚本(Linux/Mac)
  3. 方法三:使用 PowerShell(Windows)
  4. 方法四:使用专门的软件(图形界面)
  5. 使用注意事项
  6. 推荐工作流程

可以用脚本批量重命名音乐文件,以下是几种常见的方法,适用于不同操作系统和需求:

使用 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)

使用注意事项

  1. 先备份:重命名前最好复制一份或先测试几个文件
  2. 测试运行:先用 --dry-run 参数或只打印不实际重命名
  3. 文件名规范
    • 避免使用特殊字符:/ \ : * ? " < > |
    • 系统文件名长度限制(Windows 255字符,Linux/Mac 255字符)
  4. 批量处理前检查
    • 是否有重复的文件名
    • 音乐文件是否损坏
    • ID3标签信息是否完整

推荐工作流程

  1. 先用工具修复/补全ID3标签
  2. 使用ID3标签信息进行重命名
  3. 建议格式:艺术家 - 专辑 - 曲号 - 歌名.mp3
  4. 最后统一规范化(大小写、空格等)

需要了解某个具体方法的更多细节吗?

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