Це може бути дурним питанням, але навіть після прочитання документації я все ще не впевнений, як знайти всі рядки у файлі, що містять або ".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"
і якщо будь-яка з цих речей присутня, вона буде оцінена як істина та вихід 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"