批量重命名具有多个扩展名的文件

批量重命名具有多个扩展名的文件

这件事已经让我抓狂好一阵子了。

我的文件名称中包含多个无用的扩展名。

例如,通过命令行批量将 MP4 转换为 MP3:-


cd /d "%1"
for /r %%x in ("*.mp4") do ffmpeg -i "%%x" -ar 24000 "%%x.wav"
for /r %%x in ("*.wav") do lame "%%x" "%%x.mp3" -m m -s 24k -b 96k
del *.wav

这将获取文件“input.mp4”并创建“input.mp4.wav.mp3”而不是“input.mp3”。

我真的很想能够批量重命名这些有问题的文件名,反而在转换过程中解决该问题的解决方案。原因是到目前为止我已经进行了很多转换。我在 BAT 文件中尝试了很多不同的技术,我真的需要一个可以在 CMD 中工作的解决方案,而不是 Powershell 或其他第三方软件。不过,一个非常小的免费 EXE 软件可能是可以接受的。

谢谢。 。 。 。

答案1

使用 rnr.exe 找到了自己的解决方案:-

rnr -f -r mp4.wav.mp3 mp3 .

答案2

如果您想更改扩展名,请使用“~”语法;请参阅for/?详细信息。

在您的例子中,您必须使用“~n”,它返回不带循环变量“%%x”扩展名的名称。如果您还想添加驱动器号和路径,则必须组合 dpn 等%%~dpnx%

因此修正后的批次将是:

cd /d "%1"
for /r %%x in ("*.mp4") do ffmpeg -i "%%x" -ar 24000 "%%~dpnx.wav"
for /r %%x in ("*.wav") do lame "%%x" "%%~dpnx.mp3" -m m -s 24k -b 96k
del *.wav

托马斯

相关内容