Como tratar a “Nenhuma instância encontrada” do comando WMIC em lote?

1

Em um lote, quero finalizar todas as instâncias de um processo. Eu tentei usar:

@echo off
setlocal EnableDelayedExpansion
for /f "usebackq skip=1" %%r in ('wmic process where Name^="CALC.exe"  get Processid ^| findstr /r /v "^$"') do SET procid=%%~r
IF [!procid!] NEQ [] (
  wmic process where Name="CALC.exe" call terminate >> NUL
) ELSE (
  GOTO :break
)
:break
SET procid=
endlocal

Mas se nenhuma instância do calc.exe for existente, não quero que a "Nenhuma instância (s) disponível" seja exibida. Também vou preferir não ter a tela rolando uma linha por instância do calc.exe

Como fazer isso?

    
por durin 31.05.2016 / 10:45

1 resposta

0

Eu não quero que as "Nenhuma instância (s) disponível" sejam exibidas.

for /f "usebackq skip=1" %%r in ('wmic process where Name^="CALC.exe" get Processid ^| findstr /r /v "^$"') do SET procid=%%~r

Você pode eliminar os erros usando o operador de redirecionamento 2> nul

Redirect to NUL (hide errors)

command 2> nul

Notas:

  • O > deve ter escape usando ^ .
  • O dispositivo null é um arquivo especial que descarta todos os dados gravados nele, mas informa que a operação de gravação foi bem-sucedida.

O comando for se torna:

'wmic process where Name^="CALC.exe" get Processid 2^> nul ^| findstr /r /v "^$"'

Também preferirei não ter a tela rolando uma linha por instância de calc.exe

 wmic process where Name="CALC.exe" call terminate >> NUL

Você pode jogar fora as linhas extras em branco usando o operador de redirecionamento > NUL 2>&1

O comando "terminate" torna-se:

wmic process where Name="CALC.exe" call terminate >NUL 2>&1

Colocando tudo junto

Arquivo em lote modificado:

@echo off
setlocal EnableDelayedExpansion
for /f "usebackq skip=1" %%r in ('wmic process where Name^="CALC.exe" get Processid 2^> nul ^| findstr /r /v "^$"') do SET procid=%%~r
IF [!procid!] NEQ [] (
  wmic process where Name="CALC.exe" call terminate >NUL 2>&1
) ELSE (
  GOTO :break
)
:break
SET procid=
endlocal

Leitura Adicional

por 31.05.2016 / 15:39