コマンドラインからプログラムをコンパイルした後、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
の入力にパイプするにはどうすればよいですか?
find /c "foo"
のパラメーターには引用符を使用します。
私はこの構文で必要なことを直接行うことができました:
find.exe """Find This""" *.log
TRIPLEの二重引用符を使用すると、そのうちの2つはPOSHによって使用され、FINDが参照できるように単一の引用符を残していると思います。これは、Server 2012 R2では正常に機能しました。
"string"
パラメータはfind
では必須です。 findstr
をパイピングしてみてください:
find /c /v ""
複数の引用が機能している間、別のオプションは引用をエスケープすることです。 schtasks/query/tn "WMS待機モニター"/v/fo list | 「ステータス:」を検索