Windows'ta çıktımı nasıl “grep” yaparım [duplicate]


3

Bu sorunun burada zaten bir cevabı var:

Ffmpeg içeren bir videonun süresini bulduğum her cevap grep, cmddoğal olarak sahip olmayan bir içeriğe sahiptir.

"Pencereler için Grep" olayı olduğunu biliyorum, ancak komut satırıyla gelen bir işlevi kullanmayı tercih ederim.

Yani ne zaman ffmpeg -i inputalırım

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

Bundan bu süreyi almak istiyorum, ki bu durumda "00: 00: 12.44"


1
Cygwin'i yükleyin.
Daniel R Hicks

Komut çıkışını, unix kabuğunda olduğu gibi cmd cinsinden yönlendirebilirsiniz. Ve grep'i bir dereceye kadar taklit edebilen find, findstr gibi bazı komutlar var. Aksi takdirde, @DanielRHicks'in önerdiği gibi cygwin'i edinin.
tumchaaditya

"Komut satırıyla gelen bir işlev" i arıyorum.
Houseman

Yanıtlar:


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

ffmpegStandart dosyaya stderr (ffmpeg'nin bilgilerini varsayılan olarak yazdığı yer) çıkışını göndererek giriş dosyasında yürütün . findstrBoşluklarla başlayan satırları ve ardından gelen satırları almak için listeyi filtreleyin Duration:. Bulunan her satır için, alan sınırlayıcıları olarak kabul edilen boşluklar ve virgüller ve satırdaki ikinci belirteç, yani Duration:etiketten sonraki süre istenir . Bu değer, konsola eko ile fordeğiştirilebilen değiştirge içine alınır %a.

Yerine yüzde işaretleri kaçış, toplu dosyasından kullanmak için %birlikte%%


Sanırım kapanış 'eksik:' ('findstr / r / c: "^ * Süre:"). Olması gerektiğini düşünüyorum ('findstr / r / c: "^ * Süre:"')
cliffclof 11:16

@cliffclof, elbette haklısın. Cevap güncellendi, teşekkür ederim
MC ND

1

Powershell'i kullanmaya karşı değilseniz (Windows'un son sürümlerinde standart olarak gelir), bu Select-Stringkomutu kullanabilirsiniz .

İşte başka bir Süper kullanıcı sorusundan harika bir yazı - link

Temel olarak, komutun çıktısını alabilir ve sonuçları select-string'e yönlendirebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.