【发布时间】:2017-01-23 18:47:03
【问题描述】:
我正在尝试在 cmd 中运行 for 循环,如下所示:
for %f in (*.mp4) do (
set outfile=%f:mp4=mp3%
ffmpeg -i %f -vn -ar 44100 -ac 1 -b:a 32k -f mp3 %outfile%
)
该脚本应该抓取所有 *.mp4 文件,对其运行 ffmpeg 命令,然后将生成的文件命名为与 mp4 相同的文件,只是扩展名更改为 *.mp3。
它不起作用。输出的字面意思是%outfile%。如果我不得不猜测,outfile 变量的初始化或调用有问题。我还认为这可能是数据类型问题。 %f 可能是一个指针,而不是字符串,所以需要某种字符串提取或类型转换。
如何在 cmd 中设置和使用文件名作为字符串变量?
【问题讨论】:
-
您需要为
outfile启用和使用delayed expansion,因为您正在编写和在单个代码块中读取此变量;否则,变量将扩展为解析整个块时所保存的值;或者,更简单的是,关注下面的MCND's advice...