Use aspas no parâmetro find /c "foo"
.
Estou tentando escrever um script do Windows cmd.exe
para contar as ocorrências de aes
depois de compilar um programa a partir da linha de comando. É simplesmente um script de auditoria / QA para garantir que estamos obtendo o que esperamos.
Quando uso findstr
sem o pipe, parece funcionar bem:
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
...
Assim que canalizar o resultado para find /c
para contar ocorrências, as coisas explodem. O find
não só não funciona como esperado, mas também interrompe o comando findstr
do processo.
cryptopp-5.6.3>dumpbin /disasm Win32/cryptlib/Debug/rijndael.obj | findstr aes | find /c aes
FIND: Parameter format not correct
FINDSTR: Write error
De acordo com find /?
:
If a path is not specified, FIND searches the text typed at the prompt
or piped from another command.
Como canalizar a saída de findstr
para a entrada de find
?
Consegui fazer diretamente o que eu precisava fazer com essa sintaxe:
find.exe "" "Encontre isto" "" * .log
Com as aspas duplas TRIPLE, acho que 2 delas são consumidas pelo POSH, deixando a aspas simples para o FIND ver. Isso funcionou bem para mim em um Server 2012 R2 ..
O parâmetro "string"
é obrigatório em find
. Tente canalizar findstr
para:
find /c /v ""
Tags command-line windows find