这个需求非常经典,通常有两种最高效的处理方式:如果你熟悉一点电脑操作,可以用 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” 功能,通过正则表达式秒杀这个问题:
选中所有要修改的文件,右键选择 PowerRename。
在“搜索”栏输入:
(.+) - (.+)在“替换为”栏输入:
$2 - $1勾选 “使用正则表达式”。
检查预览界面,没问题点击“应用”。
原理:
$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()自动处理了空格问题。