web-dev-qa-db-ja.com

パイプでの「FIND:パラメータの形式が正しくありません」および「FINDSTR:書き込みエラー」

コマンドラインからプログラムをコンパイルした後、aesの発生をカウントするWindows cmd.exeスクリプトを記述しようとしています。期待どおりの結果が得られるようにするための単純な監査/ QAスクリプトです。

パイプなしでfindstrを使用すると、正常に動作するようです:

cryptopp-5.6.3>dumpbin /disasm Win32/cryptlib/Debug/rijndael.obj | findstr aes
  000000C1: 66 0F 3A DF C0 00  aeskeygenassist xmm0,xmm0,0
  00000206: 66 0F 3A DF C0 00  aeskeygenassist xmm0,xmm0,0
  00000345: 66 0F 38 DB 04 81  aesimc      xmm0,xmmword ptr [ecx+eax*4]
  00000366: 66 0F 38 DB 04 81  aesimc      xmm0,xmmword ptr [ecx+eax*4]
  0000039F: 66 0F 38 DB 04 81  aesimc      xmm0,xmmword ptr [ecx+eax*4]
  00000078: 66 0F 38 DC C8     aesenc      xmm1,xmm0
  000000AB: 66 0F 38 DC C8     aesenc      xmm1,xmm0
  ...

結果をfind /cにパイプしてオカレンスをカウントするとすぐに、問題が爆発します。 findが期待どおりに機能しないだけでなく、進行中のfindstrコマンドを壊してしまいます。

cryptopp-5.6.3>dumpbin /disasm Win32/cryptlib/Debug/rijndael.obj | findstr aes | find /c aes
FIND: Parameter format not correct
FINDSTR: Write error

find /?によると:

If a path is not specified, FIND searches the text typed at the Prompt
or piped from another command.

findstrの出力をfindの入力にパイプするにはどうすればよいですか?

6
jww

find /c "foo"のパラメーターには引用符を使用します。

3
week

私はこの構文で必要なことを直接行うことができました:

find.exe """Find This""" *.log

TRIPLEの二重引用符を使用すると、そのうちの2つはPOSHによって使用され、FINDが参照できるように単一の引用符を残していると思います。これは、Server 2012 R2では正常に機能しました。

10
user2526332

"string"パラメータはfindでは必須です。 findstrをパイピングしてみてください:

find /c /v ""
1
SΛLVΘ

複数の引用が機能している間、別のオプションは引用をエスケープすることです。 schtasks/query/tn "WMS待機モニター"/v/fo list | 「ステータス:」を検索

0
user1147609