如何在 Windows 中“grep”输出

如何在 Windows 中“grep”输出

我发现每个使用 ffmpeg 获取视频时长的答案都包含grep,但cmd本身并没有。

我知道有一个“Grep for Windows”的东西,但我宁愿使用命令行附带的功能。

所以当我这样做ffmpeg -i input

Input #0, flv, from 'vid_test001.flv':
  Metadata:
    creationdate    : Fri Sep 19 15:58:17
  Duration: 00:00:12.44, start: 0.000000, bitrate: 806 kb/s
    Stream #0:0: Video: flv1, yuv420p, 320x240, 1k tbr, 1k tbn, 1k tbc
    Stream #0:1: Audio: nellymoser, 22050 Hz, mono, flt

我想从中获取持续时间,在本例中为“00:00:12.44”

答案1

ffmpeg -i "inputFile" 2>&1 | for /f "tokens=2 delims=, " %a in ('findstr /r /c:"^ *Duration:"') do echo %a

ffmpeg对输入文件执行,将 stderr(ffmpeg 默认将其信息写入其中)的输出发送到标准输出。使用 过滤列表以findstr检索以空格开头后跟 的行Duration:。对于找到的每一行,空格和逗号被视为字段分隔符,并请求行中的第二个标记,即标签后的时间。此值被检索到可替换参数Duration:中,并回显到控制台。for%a

要从批处理文件中使用,请转义百分号,并将其替换%%%

答案2

如果您不反对使用 Powershell(Windows 最新版本的标准),您可以使用该Select-String命令。

这是另一个超级用户提问的一篇很棒的帖子 -关联

基本上,您可以获取命令的输出并将结果通过管道传输到 select-string。

相关内容