8

我有一个 Windows 批处理脚本,它将在文件中查找字符串

find /i "WD6"  %Inputpath%file.txt
if %errorlevel% == 0 GOTO somestuff

目前这就是我的代码的样子。我遇到了一个我想在同一个文件中搜索的新字符串,如果找到它就执行相同的操作,它将它存储在一个名为的变量%acctg_cyc%中,我可以在一行代码中搜索这两个字符串吗?我试过这个:

find /i "WD6" %acctg_cyc%  %Inputpath%file.txt
if %errorlevel% == 0 GOTO somestuff

但它似乎忽略了 %acctg_cyc%,只在 file.txt 中查找“WD6”。我尝试测试%acctg_cyc%file.txt 中的位置以及何时不在并且两次都通过。

有什么想法吗?我知道我可以用更多的代码行来做到这一点,但我现在真的想避免这种情况。也许这是不可能的。

感谢您的任何帮助!

4

3 回答 3

14

find不是很强大。它只搜索一个字符串(即使是两个单词):find "my string" file.txt查找字符串my string

findstr有更多的权力,但你必须小心如何使用它:

findstr "hello world" file.txt 

查找包含其中一个或两个的任何helloworld

查看findstr /?更多信息。

使用 (find 或 findstr) 可以在一行中查找两个单词:

find "word1" file.txt|find "word2"

查找分散在文件中的两个单词(find 或 findstr):

find "word1" file.txt && find "word2" file.txt
if %errorlevel%==0 echo file contains both words
于 2015-07-20T14:14:27.603 回答
7

我尝试findstr了多个/C:参数(每个要搜索的句子一个),这在我的案例中起到了作用。所以这是我在一个文件中查找多个句子并重定向输出的解决方案:

findstr /C:"the first search" /C:" a second search " /C:"and another" sourcefile.txt > results.txt
于 2017-12-04T08:03:00.633 回答
0

我用过这个。也许不是很正统,但有效!它等到浏览器关闭

:do_while_loop
rem ECHO LOOP %result%
rem pause
tasklist /NH | find "iexplore.exe"
set result=%ERRORLEVEL%
tasklist /NH | find "firefox.exe"
set result=%result%%ERRORLEVEL%
if not "%result%"=="11" goto :do_while_loop
于 2018-03-05T17:29:07.177 回答