我在Windows 7的命令提示符窗口中从批处理文件中执行控制台命令时遇到问题。我想获取视频的帧速率和音频流的数量,并将它们写入文本文件。对于帧速率没有问题,我从批处理文件中运行此命令:
for %%a in (C:\Documents) do (
echo.
Mediainfo --Inform=Video;%%FrameRate%% %%a
)>> "D:\TestFrame2.txt"
但是对于音频流的数量,它返回一个空文本,并且没有错误消息。我使用完全相同的批处理文件,但我将Video
替换为Audio
而将FrameRate
替换为StreamCount
。
我运行Mediainfo --Help-Inform
时会看到这些参数。
此外,许多其他选项(例如Mediainfo --Inform=General;%%AudioCount%%
)也无效。
我已经测试过Inform
替换Output
并且没有变化。我还测试过直接在控制台窗口中使用此命令,而不将结果重定向到文本文件中,这也是一样的。
没有获取写入文本文件的音频流数量的原因是什么?
答案 0 :(得分:2)
使用MediaInfoCLI将其输出重定向到文件,并且无需枚举文件,因为程序可以执行此操作。
列出没有文件名的帧速率:
pushd c:\documents
"C:\Program Files (x86)\MediaInfo\MediaInfoCLI" --output=Video;%%FrameRate%%\r\n ^
*.mpg *.mp4 *.mkv *.avi *.m4a *.flac *.mp3 *.wav >"D:\TestFrame2.txt"
popd
列出由:
分隔的文件名和帧速率(请注意,当需要从多个MediaInfo部分获取信息时,需要模板文件):
pushd c:\documents
(
echo General;%%FileName%%%%FileExt%%:
echo Video;%%FrameRate%%\r\n
) >"%temp%\mediainfotemplate"
"C:\Program Files (x86)\MediaInfo\MediaInfoCLI" ^
--output="file://%temp%\mediainfotemplate" ^
*.mpg *.mp4 *.mkv *.avi *.m4a *.flac *.mp3 *.wav >"D:\TestFrame2.txt"
del "%temp%\mediainfotemplate"
popd
您可以使用*
来处理所有文件,而不是显式文件类型列表。
答案 1 :(得分:0)
。
C:\Documents
是一个文件夹,您必须指定*.*
,*.txt
,my-video-??.*
或*.mp4
*.avi
视频AVI的示例。
(for %%a in (C:\Documents\*.avi) do (echo fake-command %%a)
)>_TestFrame2.txt