2017-05-12 4 views
2

findstrで私は多くの経験がありませんが、これはまったくわかりません。それともfindstrのバグですか?これらの例でfindstrが "NOW"を見つけられません

外観:

1)echo NOW|findstr "CLEAN NOCHANGE NOW">NUL&&echo found 戻り何もしかし、なぜ? >リターンの[OK]を発見した - ここで見つける

2)echo CLEAN|findstr "CLEAN NOCHANGE NOW">NUL&&echo found リターンは、それは大丈夫

3)echo NOCHANGE|findstr "CLEAN NOCHANGE NOW">NUL&&echo found リターンは、これがまた

を働く見つけしかし、私は使用している場合/ Iそれが
4)echo NOW|findstr /I "CLEAN NOCHANGE NOW">NUL&&echo found の作品です

'now'が小文字の場合 - >動作します
5)echo now|findstr "CLEAN NOCHANGE now">NUL&&echoが見つかりました - >戻り値が見つかりました

文字列 "NOW"に特別なものはありますか?異なる長さのものであり、部分的に重複する複数のリテラル大文字と小文字を区別して検索文字列を有する場合

+1

「NOW」には何も特別なものはありませんが、[findstrについては非常に特別です。](http://stackoverflow.com/questions/8844868/what-are-the-undocumented-features-and-limitations-of- the-windows-findstr-comman)(これはマイクロソフトのツールです) – jeb

答えて

0

スレッドWhy doesn't this FINDSTR example with multiple literal search strings find a match?によれば、findstrが正しく動作しません。この記事も参照してください:What are the undocumented features and limitations of the Windows FINDSTR command?。ここで

回避策にはメタ文字が使用されていないとして、正規表現検索文字列を使用している:ここでは

echo NOW| findstr /R "CLEAN NOCHANGE NOW" > nul && echo found 

は仕事の周りのすべての単一のリテラル検索文字列のために、個々のfindstrコマンドを使用している:

echo NOW| (findstr /V "CLEAN" | findstr /V "NOCHANGE" | findstr /V "NOW") > nul || echo found 

:ここ

は、別の回避策findstrの小さな兄弟、すなわちfindコマンドに基づいています

echo NOW| (find /V "CLEAN" | find /V "NOCHANGE" | find /V "NOW") > nul || echo found 
関連する問題