Это может быть глупым вопросом, но даже после прочтения документации я все еще не уверен, как найти все строки в файле, который содержит «.cpp» или «.h».
Есть ли способ сделать это?
Например (не работает):
findstr /i .cpp,.h // , == OR
Это может быть глупым вопросом, но даже после прочтения документации я все еще не уверен, как найти все строки в файле, который содержит «.cpp» или «.h».
Есть ли способ сделать это?
Например (не работает):
findstr /i .cpp,.h // , == OR
Ответы:
Если вам нужно включить фразы (разделенные пробелами слова), вы можете сделать это:
findstr /i /c:"IBSS" /c:"WDI Version" /c:"Soft Ap"
Или, если вы получаете некоторые нежелательные строки, вы также можете исключить их, используя /v
параметр:
findstr /i /c:Hosted /c:Version /c:Driver | findstr /v /i /c:drivers /c:native
(Проверено это на Windows 7 и Windows 10)
FindStr /V /I /C:"Native" /C:"Drivers" | FindStr /I /R /C:"Hosted" /C:"Version /C:"Driver"
То, как вы формируете OR
логику, зависит от того, что вы ищете, и от ваших ожидаемых будущих изменений, если это применимо.
Если это список запросов, в которых нет пробелов, вы можете просто сделать это, быстро и грязно:
findstr "thing1 thing2 thing3 thing4 thing5"
и если какая-либо из этих вещей присутствует, она оценивается как true и завершается 0.
Если то, что вы ищете, имеет пробел, вы должны использовать findstr
буквенные строки поиска с /c:""
типом параметра. Вы все еще можете использовать этот тип параметра, если пробелов нет.
/C:string Uses specified string as a literal search string.
Тем не менее , вы не можете комбинировать буквальным с Быстрым и грязным . Например, это не будет работать:
findstr "thing1 thing2" /c:"thing3 thingy"
Вам нужно будет преобразовать более ранние параметры в буквальные параметры, например, так:
findstr /c:"thing1" /c:"thing2" /c:"thing3 thingy"
Из-за этого лучше использовать буквенную опцию, потому что она будет лучше масштабироваться динамическими сценариями. Однако, если это просто статический набор запросов без пробелов, быстрого и грязного способа должно быть достаточно.
FindStr /I /R /C:"Hosted" /C:"Version /C:"Driver[^S]" | FindStr /v /i /c:"Native"