Я не хочу отображать «Нет доступных экземпляров».
for /f "usebackq skip=1" %%r in (`wmic process where Name^="CALC.exe" get Processid ^| findstr /r /v "^$"`) do SET procid=%%~r
Вы можете выбросить ошибки, используя оператор перенаправления 2> nul
Перенаправить на NUL (скрыть ошибки)
command 2> nul
Заметки:
-
>
должен быть экранирован с помощью ^
,
-
null
Устройство - это специальный файл, который отбрасывает все записанные в него данные, но сообщает, что операция записи выполнена успешно.
for
команда становится:
`wmic process where Name^="CALC.exe" get Processid 2^> nul ^| findstr /r /v "^$"`
Также я предпочитаю, чтобы дисплей не прокручивался вниз на одну строку для каждого экземпляра calc.exe.
wmic process where Name="CALC.exe" call terminate >> NUL
Вы можете выбросить лишние пустые строки с помощью оператора перенаправления > NUL 2>&1
Команда "завершить" становится:
wmic process where Name="CALC.exe" call terminate >NUL 2>&1
Собираем все вместе
Модифицированный пакетный файл:
@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
Дальнейшее чтение