Я не хочу отображать «Нет доступных экземпляров».
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
Дальнейшее чтение