如何批量重命名文件,删除文件名".mp3"后的所有字符?



我认为windows powershell可以做到这一点。我有一堆mp3文件,它们的文件名有问题。在每个文件的文件名中,"。mp3"后面都有一个字符流,这可以防止它们被识别为mp3文件。我试过手动重命名每个文件,但现在厌倦了。我想把这个过程自动化。

应该可以使用powershell,也许还有其他我不知道的选项。脚本需要读取文件夹中的每一个文件名,如果文件名中"。mp3"之后有更多字符,则删除后面的所有字符。如何做到这一点?

$files=ls -Name *.mp3*
foreach ($file in $files) {
Rename-Item $file $file.Substring(0, $file.LastIndexOf(".mp3")+4)
}

但是,这个解决方案太长了。

首先,我相信社区会希望看到你尝试一些,这样我们就可以帮助你修复它。然而,其他用户已经提供了解决方案,所以我想从PowerShell的角度插话

Get-ChildItem C:temp -Filter "*.mp3*" | Rename-Item -NewName {$_.Name -replace ".mp3.*",".mp3"}

这将获取文件名中包含".mp3"的所有文件。然后,它将通过使用"。mp3"之后的所有内容来重命名它们。如果一个文件不止一次带有"。mp3",这将是一个问题。很容易解决,但我将通过接受这种可能性来保持简洁。

UPDATE

ok。所以在rename命令中使用通配符是很奇怪的。

this DOES work

ren "*.mp3*" "??????????????????????????????????????????????????????????.mp3"

只要有那么多?作为最长的文件名

如果需要详细信息请参考

https://superuser.com/questions/475874/how-does-the-windows-rename-command-interpret-wildcards

最新更新