这可能是一个愚蠢的问题,但即使阅读文档我仍然不确定如何找到文件中包含“.cpp”的所有行或者“。H”。
有没有办法做到这一点?
例如(不起作用):
findstr /i .cpp,.h // , == OR
答案1
您可以通过用空格分隔表达式来进行逻辑或。
试一试,应该对你有用。
findstr /i "\.cpp \.h" myfile.txt
将两者括在引号内并用空格隔开。请注意,您还必须转义两者中的 .。
答案2
如果您需要包含短语(用空格分隔的单词),您可以这样做:
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 上测试)
答案3
如何形成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"
因此,最好使用文字选项,因为它可以更好地与动态脚本配合使用。但是,如果它只是一组没有空格的静态查询,那么这种快速而肮脏的方法就足够了。