使用PowerShell正则表达式批量重命名不规则格式的MP3文件
使用PowerShell正则表达式批量重命名不规则格式的MP3文件
嗨,我来帮你搞定这个批量重命名的问题!你的需求很明确——把每个MP3文件名里第一个字母之前的所有字符都去掉,只保留后面的文字和扩展名。你之前的尝试只覆盖了带横杠的情况,咱们来调整正则表达式,让它能适配所有你给出的格式。
核心思路:匹配第一个字母前的所有非字母字符
我们需要一个正则表达式,精准匹配文件名开头到第一个大小写字母(a-z/A-Z)之间的所有内容,然后把这部分替换为空字符串。对应的正则是:^[^a-zA-Z]+
解释一下这个正则的含义:
^:锚定到字符串的开头,确保我们只处理文件名最前面的部分[^a-zA-Z]+:匹配一个或多个不是大小写字母的字符(数字、横杠、点、空格这些都包含在内)
完整的PowerShell命令
直接用管道结合Get-ChildItem和Rename-Item就能搞定,推荐先加-WhatIf参数预览效果,确认没问题再执行实际重命名:
# 先预览重命名结果,不会实际修改文件 Get-ChildItem -Filter *.mp3 | Rename-Item -NewName { $_.Name -replace '^[^a-zA-Z]+', '' } -WhatIf # 确认预览正确后,去掉-WhatIf执行实际重命名 Get-ChildItem -Filter *.mp3 | Rename-Item -NewName { $_.Name -replace '^[^a-zA-Z]+', '' }
效果验证
拿你给出的例子测试,完全符合预期:
- 输入:
1-09. But Not for Me.mp3→ 输出:But Not for Me.mp3 - 输入:
13. Indiana (Back Home Again in Indiana).mp3→ 输出:Indiana (Back Home Again in Indiana).mp3 - 输入:
2-02 I Love You.mp3→ 输出:I Love You.mp3 - 输入:
2-11. A Foggy Day.mp3→ 输出:A Foggy Day.mp3
一些小提醒
- 确保在MP3文件所在的目录下运行命令,或者给
Get-ChildItem加上-Path "你的文件路径"参数指定目录 - 如果有多个文件重命名后会变成同一个名字,
Rename-Item会报错,建议先检查目标文件名是否重复 - 永远记得先用
-WhatIf预览,避免误操作导致文件命名混乱
备注:内容来源于stack exchange,提问作者Jeff Taylor
相关产品推荐
相关产品推荐

