我正在制作一个带有ffmpeg的Windows批处理脚本,可以将音频文件转换为多种格式。
我希望音频在这里以两种格式转换。 32kbps和40kbps。
Setlocal EnableDelayedExpansion
for %%a in ("*.*") do ffmpeg -i "%%a" -b:a 32000 "%%~na - mp3@32kbps.mp3"
for %%a in ("*.*") do ffmpeg -i "%%a" -b:a 40000 "%%~na - mp3@40kbps.mp3"
pause
然而,似乎我得到三个输出。
声音 - mp3@32kbps.mp3
声音 - mp3 @ 40kbps-mp3
声音 - mp3 @ 32kbps - mp3@40kbps.mp3
我知道我必须在这里做错事,因为我只想要两个文件。为什么我为什么要在这里获得第三种格式(声音mp3 @ 32kbps - mp3@40kbps.mp3 ),我该如何避免这种情况?
这是我正在使用的更新代码:
@echo off
for %%a in (*.*) do (
ffmpeg -i "%%a" -b:a 32000 -ar 44100 "%%~na - [16-bit 44,100kHz - 32kbps].mp3"
)
pause
答案 0 :(得分:3)
第二个for循环还处理从1st开始的新生成的mp3。 最好只使用一个:
Setlocal EnableDelayedExpansion
for %%a in (*.*) do (
ffmpeg -i "%%a" -b:a 32000 "%%~na - mp3@32kbps.mp3"
ffmpeg -i "%%a" -b:a 40000 "%%~na - mp3@40kbps.mp3"
)
pause