Come posso "grep" output in Windows [duplicato]


3

Questa domanda ha già una risposta qui:

Ogni risposta che ho trovato per ottenere la durata di un video con ffmpeg contiene grep, che cmdnon ha nativamente.

So che esiste una cosa "Grep per Windows", ma preferirei usare una funzione fornita con la riga di comando.

Quindi quando lo faccio ffmpeg -i inputottengo

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

Mi piacerebbe ottenere la durata da questo, che è "00: 00: 12.44" in questo caso


1
Installa Cygwin.
Daniel R Hicks,

È possibile reindirizzare l'output del comando in cmd proprio come nella shell di unix. E ci sono alcuni comandi come find, findstr che può imitare in qualche modo grep. Altrimenti, ottieni cygwin come suggerito da @DanielRHicks.
tumchaaditya,

Sto cercando "una funzione fornita con la riga di comando".
Houseman,

Risposte:


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

Eseguire ffmpegsul file di input, inviando l'output di stderr (dove ffmpeg scrive le sue informazioni per impostazione predefinita) sull'output standard. Filtra l'elenco con findstrper recuperare le righe che iniziano con spazi seguiti da Duration:. Per ogni riga trovata, vengono richiesti spazi e virgole considerati delimitatori di campo e il secondo token nella riga, ovvero il tempo successivo Duration:all'etichetta. Questo valore viene recuperato nel forparametro sostituibile %ache viene ripetuto per la console.

Per utilizzare dal file batch, sfuggire ai segni di percentuale, sostituendo %con%%


Penso che ti manchi una chiusura 'at: (' findstr / r / c: "^ * Durata:"). Penso che dovrebbe essere ('findstr / r / c: "^ * Durata:"')
cliffclof

@cliffclof, ovviamente hai ragione. Risposta aggiornata, grazie
MC ND,

1

Se non sei contrario all'utilizzo di Powershell (di serie nelle versioni recenti di Windows), puoi utilizzare il Select-Stringcomando.

Ecco un ottimo post da un'altra domanda di Superuser: link

Fondamentalmente, puoi prendere l'output del comando e reindirizzare i risultati a select-string.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.