如何在 cmd 命令行中设置和使用文件名字符串变量?
How to set and use filename string variables in cmd command line?
我正在尝试 运行 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 中设置和使用文件名作为字符串变量?
最好的办法就是不去做。不要在变量中存储可以直接从 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您可以找到一些方法来解决这个问题。
我正在尝试 运行 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 中设置和使用文件名作为字符串变量?
最好的办法就是不去做。不要在变量中存储可以直接从 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您可以找到一些方法来解决这个问题。