Como faço para “grep” no Windows [duplicado]

3

Cada resposta que encontrei para obter a duração de um vídeo com o ffmpeg contém grep , que cmd não possui nativamente.

Eu sei que há uma coisa "Grep for windows", mas prefiro usar uma função que vem com a linha de comando.

Então quando eu faço ffmpeg -i input eu recebo

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

Gostaria de obter a duração deste, que é "00: 00: 12.44" neste caso

    
por Houseman 24.09.2014 / 19:36

2 respostas

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

Execute ffmpeg no arquivo de entrada, enviando a saída de stderr (onde o ffmpeg grava suas informações por padrão) para a saída padrão. Filtre a lista com findstr para recuperar as linhas que começam com espaços seguidos por Duration: . Para cada linha encontrada, espaços e vírgulas são considerados como delimitadores de campo e o segundo token na linha é solicitado, ou seja, o tempo após o rótulo Duration: . Esse valor é recuperado no parâmetro for substituível %a que é ecoado no console.

Para usar o arquivo em lote, escape dos sinais de porcentagem, substituindo % por %%

    
por 25.09.2014 / 08:28
1

Se você não se opuser a usar o Powershell (padrão em versões recentes do Windows), você poderá usar o comando Select-String .

Veja um ótimo post de outra pergunta sobre superusuários - link

Basicamente, você pode pegar a saída do comando e canalizar os resultados para selecionar string.

    
por 24.09.2014 / 21:12