2015-07-20 45 views
2

我有一個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中的位置,當它不是,並且它通過兩次。

有什麼想法?我知道我可以用更多的代碼來做到這一點,但我現在真的很想避免這種情況。也許這是不可能的。

謝謝你的幫助!

回答

6

find不是很強大。它僅搜索一個字符串(即使它是兩個字):find "my string" file.txt查找字符串my string

findstr擁有更多的權力,但你必須要小心如何使用它:

findstr "hello world" file.txt 

發現任何線,包含兩種helloworld或兩者。

有關更多信息,請參閱findstr /?

在一行中找到這兩個詞是可能的(查找或FINDSTR):

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

尋找散落在文件這兩個詞(發現或FINDSTR):

find "word1" file.txt && find "word2" file.txt 
if %errorlevel%==0 echo file contains both words 
+0

的'找「字1」 file.txt的|找到「單詞2」'似乎並不奏效。 – IGRACH

+0

你也可以對整個字符串使用'findstr/c:「test1 test2」'標誌。 – IGRACH

0

我試圖findstr與多個/C:參數(每個要被搜索的句子一個)在我的情況下做了詭計。 所以這是我在一個文件中發現多個句子,並重定向輸出解決方案:

findstr /C:"the first search" /C:" a second search " /C:"and another" sourcefile.txt > results.txt 
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 
相關問題