首先,我使用Google搜索并搜索了如何解决此问题,但没有运气。我正在制作一个批处理文件,以将文件中的音频重新编码为aac(如果是ac-3或使用ffmpeg的ogg)。我知道如何使用ffmpeg进行转换,而不是仅在音频匹配某个编解码器时如何实现自动化。为了获得文件的音频编解码器,我有两种不同的方法,一种使用ffprobe,另一种使用MediaInfo。如何将命令输出设置为批处理中的变量
MediaInfo --Inform="Audio;%%Format%%" "input.mkv"
或
ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "input.mkv"
不过,我的问题是从命令的输出设置变量。这是我一直在尝试的代码,无济于事。
SETLOCAL
for %%a in (*.mp4) do (
MediaInfo --Inform="Audio;%%Format%%" "%%a">codec.txt
SET /p codec=<codec.txt
DEL codec.txt
ECHO %codec%
)
pause
很明显,这只是我目标的一部分,但这是我看不到的部分。我通过删除“DEL codec.txt”部分来检查,实际上是将正确的输出存储在文本文件中,但不会将其导入到变量中。无论如何,我可以设置输出到一个变量是好的,这只是我经常在我的搜索中找到的方式。
任何帮助,非常感谢。
可能重复[windows批处理命令为循环集环境变量](http://stackoverflow.com/questions/17598638/windows-batch-command-for-loop-set-environment-variable) –
可能重复的[批处理 - 分配命令输出到变量](http://stackoverflow.com/questions/16203629/batch-assign-command-output-to-variable);也相关:[批处理 - 分配命令输出与变量变量](http://stackoverflow.com/questions/28663803/batch-assign-command-output-with-variables-to-variable) – aschipfl