如何在cmd命令行中设置和使用文件名字符串变量?

时间:2017-01-23 18:47:04

标签: string cmd filenames

我正在尝试在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中设置和使用文件名作为字符串变量?

1 个答案:

答案 0 :(得分:2)

最好的方法就是不要这样做。不要在变量中存储可以直接从for可替换参数中检索的变量。

for %f in (*.mp4) do ffmpeg -i "%f" -vn -ar 44100 -ac 1 -b:a 32k -f mp3 "%~nf.mp3"

for命令可替换参数(在您的情况下为%f)允许使用一些修饰符(请参阅for /?)。 %~nf%f

引用的文件的名称,没有扩展名

但是,如果你唯一的选择是here,你可以找到一些方法来处理这个问题。