Как обработать «экземпляр не найден» команды WMIC в пакете?


1

В пакете я хочу завершить все экземпляры процесса. Я попробую использовать:

@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

Но если нет никакого экземпляра calc.exe, я не хочу отображать «Нет доступных экземпляров». Также я предпочитаю, чтобы дисплей не прокручивался вниз на одну строку для каждого экземпляра calc.exe.

Как это сделать ??

Ответы:


0

Я не хочу отображать «Нет доступных экземпляров».

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

Дальнейшее чтение

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.