3

以下のこのコードを使用すると、コマンドライン(CMD)を使用してすべてのファイルで「エラー」という単語を見つけることができます。

find /c "error" C:\MyFiles\*.txt

しかし、「エラー」と「警告」という単語を同時に検索してほしい。

したがって、これらの2行を1行のコマンドとして入れたいと思います。

find /c "error" C:\MyFiles\*.txt
find /c "warning" C:\MyFiles\*.txt

2つの結果セットを見たくありません。

4

2 に答える 2

8

これは機能するはずです(FINDSTR検索文字列をスペースで分割するため、どちらかの単語を検索します)。

findstr "error warning" C:\MyFiles\*.txt

この同等の検索と同様に:

findstr /c:"error" /c:"warning" C:\MyFiles\*.txt

ただし、このバグがあります。複数のリテラル検索文字列を使用したこのFINDSTRの例では、一致するものが見つからないのはなぜですか。上記の検索が、バグが結果に影響を与える可能性がある時期を指定する基準を満たすかどうかはわかりません。(検索文字列間に十分な重複があるかどうかはわかりません。)しかし、申し訳ありませんが、安全である方がよいでしょう。

検索ケースで大文字と小文字を区別しないようにすることで、バグの可能性を排除できます(要件を満たしているかどうかはわかりません)。

findstr /i "error warning" C:\MyFiles\*.txt

または、検索文字列を正規表現に変換できます。検索文字列でエスケープする必要のある正規表現メタ文字がないため、これを実装するのは簡単です。

findstr /r "error warning" C:\MyFiles\*.txt
于 2012-06-29T11:32:11.597 に答える
3

あなたの場合、AND演算子を実現するためにパイプを簡単に使用できます。

find /c "error" C:\MyFiles\*.txt | find /c "warning"

あなたのコメントから、あなたはORオペレーターが必要です

この場合、私はで検索をfindstr行い、でカウントを行いますfind /c

findstr "error warning" C:\MyFiles\*.txt | find /c /v ""
于 2012-06-29T07:19:07.127 に答える