Это может быть глупый вопрос, но даже после чтение документации Я до сих пор не знаю, как найти все строки в файле, содержащие ".cpp" или ".час".
Есть ли способ сделать это?
Например (не работает):
findstr /i .cpp,.h // , == OR
Попробуйте это, должно сработать для вас.
findstr /i "\.cpp \.h" myfile.txt
Оберните в кавычки и разделите пробелом. Обратите внимание, что вам также нужно избежать. в них обоих.
Если вам нужно включить фразы (слова, разделенные пробелами), вы можете сделать это:
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)
Как вы формируете 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"
Из-за этого лучше использовать буквальный вариант, потому что он лучше масштабируется с динамическими скриптами. Однако, если это просто статический набор запросов без пробелов, быстрого и грязного способа будет достаточно.