我认为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