“FIND: Formato do parâmetro não correto” e “FINDSTR: Erro de gravação” com Pipes

3

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 ?

    
por jww 06.10.2015 / 20:49

3 respostas

2

Use aspas no parâmetro find /c "foo" .

    
por 06.10.2015 / 21:09
7

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 ..

    
por 17.11.2017 / 22:37
1

O parâmetro "string" é obrigatório em find . Tente canalizar findstr para:

find /c /v ""
    
por 06.10.2015 / 21:10