200字
重命名文件名(从“歌手-歌曲名”格式改为“歌曲名-歌手”格式)的方法
2026-03-08
2026-03-12

这个需求非常经典,通常有两种最高效的处理方式:如果你熟悉一点电脑操作,可以用 Python 脚本一键完成;如果你更喜欢图形界面,可以使用 Windows PowerToys

以下是几种不同方案,你可以根据自己的习惯选择:

方法一:使用 Python 脚本(最推荐,跨平台且精准)

这个脚本会自动扫描文件夹,将“歌手 - 歌曲名”互换。它会自动处理空格并保留文件扩展名。

import os

# 在这里输入你的文件夹路径
folder_path = r'C:\Users\YourName\Music' 

def rename_files(path):
    for filename in os.listdir(path):
        # 确保只处理包含 “-” 的文件,并排除文件夹
        if "-" in filename and os.path.isfile(os.path.join(path, filename)):
            # 拆分文件名和后缀
            name, ext = os.path.splitext(filename)
            
            # 以第一个 “-” 为分隔符拆分歌手和歌曲名
            parts = name.split("-", 1)
            
            if len(parts) == 2:
                artist = parts[0].strip()
                song = parts[1].strip()
                
                # 构建新文件名:歌曲名 - 歌手
                new_name = f"{song} - {artist}{ext}"
                
                # 执行重命名
                old_path = os.path.join(path, filename)
                new_path = os.path.join(path, new_name)
                
                try:
                    os.rename(old_path, new_path)
                    print(f"成功: {filename} -> {new_name}")
                except Exception as e:
                    print(f"失败: {filename}, 错误: {e}")

if __name__ == "__main__":
    rename_files(folder_path)

方法二:Windows 用户首选 (PowerToys - PowerRename)

如果你安装了微软官方的 PowerToys,可以使用它的 “PowerRename” 功能,通过正则表达式秒杀这个问题:

  1. 选中所有要修改的文件,右键选择 PowerRename

  2. 在“搜索”栏输入:(.+) - (.+)

  3. 在“替换为”栏输入:$2 - $1

  4. 勾选 “使用正则表达式”

  5. 检查预览界面,没问题点击“应用”。

原理:$1 代表第一个括号里的内容(歌手),$2 代表第二个括号里的内容(歌曲名)。


方法三:MacOS 用户 (内置重命名工具)

Mac 的 Finder 自带批量重命名,但它对“位置互换”支持较弱。建议使用免费小巧的 NameChanger,操作逻辑与 PowerRename 类似:

  • 选择 Regex 模式。

  • 查找:^(.+) - (.+)$

  • 替换为:$2 - $1


方法四:使用 PowerShell(Windows 原生方案)

PowerShell 是 Windows 自带的命令行利器,通过一行简单的指令就能完成成千上万个文件的批量更名。

1. 进入目标文件夹

在包含音乐文件的文件夹中,按住 Shift键 + 鼠标右键,选择 “在此处打开 PowerShell 窗口”(或 终端)。

2. 执行重命名命令

复制并粘贴以下命令(建议先看下方的“安全预览”提示):

PowerShell

Get-ChildItem *.mp3 | Rename-Item -NewName { 
    $_.BaseName -replace '^\s*(.+?)\s*-\s*(.+?)\s*$', '$2 - $1' + $_.Extension 
}

3. 详解

  • Get-ChildItem *.mp3:抓取文件夹下所有的 .mp3 文件。

  • $_.BaseName:这是文件的主文件名(不含扩展名),这样我们就不用在正则里去处理那个麻烦的点(.)了。

  • -replace '^\s*(.+?)\s*-\s*(.+?)\s*$', '$2 - $1'

    • \s*:自动忽略掉连字符 - 前后可能存在的空格。

    • (.+?):精准捕获歌手和歌曲名。

    • '$2 - $1':将捕获到的第二部分(歌曲名)和第一部分(歌手)调换位置。

  • + $_.Extension:最后再把原有的扩展名(如 .mp3)接回去。


💡 小贴士

  • 先备份: 在大规模修改前,建议先复制几个文件到一个新文件夹里测试一下,防止分隔符(是 - 还是 )匹配错误导致文件名变乱。

  • 注意空格: 有的文件名是 歌手-歌曲(没空格),有的是 歌手 - 歌曲(有空格)。上面的 Python 脚本已经通过 .strip() 自动处理了空格问题。

重命名文件名(从“歌手-歌曲名”格式改为“歌曲名-歌手”格式)的方法
作者
Aeolus
发表于
2026-03-08
License
CC BY-NC-SA 4.0

评论