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
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- redirecionamento - Operadores de redirecionamento.