Dê uma chance, trabalhe para você.
findstr /i "\.cpp \.h" myfile.txt
Envolva os dois entre aspas e separe-os com um espaço. Note, você também tem que escapar do. em ambos.
Esta pode ser uma pergunta estúpida, mas mesmo depois de ler a documentação , ainda não estou Certifique-se de como localizar todas as linhas em um arquivo que contenha ".cpp" ou ".h".
Existe uma maneira de fazer isso?
Por exemplo (não funciona):
findstr /i .cpp,.h // , == OR
Se você precisar incluir frases (palavras separadas por espaço), poderá fazê-lo:
findstr /i /c:"IBSS" /c:"WDI Version" /c:"Soft Ap"
Ou, se você estiver recebendo algumas linhas indesejadas, poderá excluí-las usando o parâmetro /v
também:
findstr /i /c:Hosted /c:Version /c:Driver | findstr /v /i /c:drivers /c:native
(testado no Windows 7 e no Windows 10)
Como você forma a lógica OR
depende do que você está procurando e de suas futuras alterações previstas, se aplicável.
Se for uma lista de consultas que não têm espaços em branco, você pode simplesmente fazer assim, rápido & sujo:
findstr "thing1 thing2 thing3 thing4 thing5"
e se qualquer uma dessas coisas estiver presente, ele será avaliado como verdadeiro e sairá como 0.
Se o que você está procurando tiver espaço em branco, será necessário usar as sequências de pesquisa literais de findstr
com o tipo de parâmetro /c:""
. Você ainda pode usar esse tipo de parâmetro se não houver espaços em branco.
/C:string Uses specified string as a literal search string.
No entanto, , você não pode combinar literal com quick & sujo . Por exemplo, isso não funcionará:
findstr "thing1 thing2" /c:"thing3 thingy"
Você precisaria converter os parâmetros anteriores em parâmetros literais, assim:
findstr /c:"thing1" /c:"thing2" /c:"thing3 thingy"
Por causa disso, é uma prática melhor usar a opção literal porque ela será dimensionada melhor com scripts dinâmicos. No entanto, se for apenas um conjunto estático de consultas que não possuem espaços em branco, o & caminho sujo deve ser suficiente.