ファイル内の文字列を検索するWindowsバッチスクリプトがあります
find /i "WD6" %Inputpath%file.txt
if %errorlevel% == 0 GOTO somestuff
現在、これは私のコードがどのように見えるかです。同じファイルで検索したい新しい文字列を見つけ、それが見つかった場合は同じアクションを実行します。それは%acctg_cyc%
という変数に格納されます。1行のコードで両方の文字列を検索できますか?私はこれを試しました:
find /i "WD6" %acctg_cyc% %Inputpath%file.txt
if %errorlevel% == 0 GOTO somestuff
しかし、%acctg_cyc%を無視し、file.txtで「WD6」のみを検索しているようです。 %acctg_cyc%
がfile.txtのどこにあるか、そうでないかをテストしてみましたが、両方とも合格しました。
何かご意見は?これをより多くのコード行で実行できることはわかっていますが、今はそれを避けようとしています。多分それは不可能です。
助けてくれてありがとう!
find
はそれほど強力ではありません。 1つの文字列のみを検索します(2つの単語であっても):find "my string" file.txt
文字列を探しますmy string
。
findstr
の方がはるかに強力ですが、使用方法には注意が必要です。
findstr "hello world" file.txt
hello
またはworld
、あるいはその両方を含む行を検索します。
見る findstr /?
詳細については。
(findまたはfindstr)を使用すると、1行で両方の単語を検索できます。
find "Word1" file.txt|find "Word2"
ファイルに散在している両方の単語を見つける(findまたはfindstr):
find "Word1" file.txt && find "Word2" file.txt
if %errorlevel%==0 echo file contains both words
これを使いました。あまりオーソドックスではないかもしれませんが、機能します!ブラウザが閉じるまで待機します
: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
findstr
を複数の/C:
引数(検索対象の文ごとに1つ)で試しましたが、私の場合はうまくいきました。したがって、これは1つのファイルで複数の文を検索し、出力をリダイレクトするための私のソリューションです。
findstr /C:"the first search" /C:" a second search " /C:"and another" sourcefile.txt > results.txt