Batch file 如何通过FFmpeg和批处理脚本转换每个目录中的音频。

Batch file 如何通过FFmpeg和批处理脚本转换每个目录中的音频。,batch-file,ffmpeg,Batch File,Ffmpeg,经过努力学习,我创建了一个batch文件: for /R D:\storytelling\MusicFiles %%a in (*.3gp) do ffmpeg -i %%a -y %%~na.mp3 但是,它无法达到我的目标,因为这里的场景有点不同: 以下是我的目录结构: 我在某个路径下有几个目录:D:\storything\MusicFiles\,其他应用程序可以创建新的目录。我把ffmpeg.exe文件放在这个路径中:D:\storything\MusicFiles\。 此外,在每

经过努力学习,我创建了一个
batch
文件:

for /R  D:\storytelling\MusicFiles %%a in (*.3gp) do ffmpeg -i %%a -y %%~na.mp3
但是,它无法达到我的目标,因为这里的场景有点不同:

以下是我的目录结构:

我在某个路径下有几个目录:
D:\storything\MusicFiles\
,其他应用程序可以创建新的目录。我把
ffmpeg.exe
文件放在这个路径中:
D:\storything\MusicFiles\

此外,在每个目录中,我都有数百个
.3gp
文件,我的目标是将它们转换为
.mp3
文件,它们位于
使用的
目录中。
但是这个剧本

for /R  D:\storytelling\MusicFiles %%a in (*.3gp) do ffmpeg -i %%a -y %%~na.mp3
将每个目录中的每个
.3gp
文件转换为路径:
D:\storything\MusicFiles\

它导致:
但是我想要
publicUser_XXX.mp3
文件仍在目录
publicUser
中,转换后所有文件仍保留在其原始目录中。唯一的变化是,我得到了一份不同媒体格式的新媒体副本,如:

请帮助我并给我一些建议

试试这个:

@echo off
for /R  D:\storytelling\MusicFiles %%a in (*.3gp) do ffmpeg -i "%%a" -y "%%~dpna.mp3"

太好了,它起作用了!。我可以问你为什么不在“(*.3gpp)”中加上引号吗?为什么要在%%~dpna.mp3中加上引号,时间是什么?而且。。。
%%~dpna
实际上是做什么的?顺便说一句:Stackoverflow已经提供了一个按钮,可以让您上传图像。@Stallman-感谢您的回复-我找到了上传按钮。使用“path\filename”总是一个很好的做法,因为这样以后就不必为长文件名重新设计代码。for in do命令的(*.3gp)部分永远不需要引号。在批处理文件中有许多情况下,规则的豁免适用,并且在需要时慢慢地学习它们是一种很好的方法。通常,始终使用双引号“c:\folder\filename.ext”%%~n是应用元变量名称部分的部分,a是后缀,因为您使用了%%a。如果使用%%B,则它将为%%~nB(区分大小写)。有关列表,请参阅最后一页的
以获取/?
帮助。