MediaInfo CLI批量获取视频参数时循环异常问题排查
问题原因及解决方法
核心问题1:MediaInfo路径不完整
你定义的vMediaInfoCLI变量仅指向文件夹路径,未指定具体可执行文件MediaInfo.exe,系统找不到目标程序,导致脚本执行到循环内命令时直接退出。
核心问题2:循环内百分号未正确转义
批处理for循环的括号块中,百分号转义规则与单独执行时不同:单独执行时用%%表示单个%,但在括号嵌套环境中,需要用%%%%才能表示单个%。原命令中的%%Bits-(Pixel*Frame)%%会被错误解析,引发语法错误,导致脚本提前终止。
修正后的脚本
SET vMediaInfoCLI="D:\MediaInfo\MediaInfo.exe" setlocal enabledelayedexpansion for %%i in (*.mp4) do ( set x=%%i echo %%i pause !vMediaInfoCLI! --Inform=Video;%%%%Bits-(Pixel*Frame)%%%% "%%i" > MediaInfo_tmp.txt ) pause exit
额外说明
- 因启用了延迟扩展,调用
vMediaInfoCLI时改用!vMediaInfoCLI!而非%vMediaInfoCLI%,避免循环内变量立即展开的问题。 - 若后续要读取
MediaInfo_tmp.txt赋值给bpp,建议在循环内同样使用延迟扩展处理变量,避免赋值后无法立即读取的问题。
内容的提问来源于stack exchange,提问作者User42
相关产品推荐
相关产品推荐

