Пакетный режим для уничтожения процесса по PID или имени процесса, в зависимости от ввода пользователя - PullRequest
1 голос
/ 10 марта 2019

Я хочу создать командный файл для уничтожения процесса по идентификатору или по имени в зависимости от выбора пользователя. Например, если он выбирает 1, он получает повышение для ввода pid, а затем код выполняет команду taskkill /PID processNumber /F, если он выбирает 2, он вводит имя процесса и код выполняет taskkill /IM processName.exe /F

Моя проблема в том, что код всегда входит в цикл после ввода pid или имени.

Вот мой код:

@echo off
title TASKKILL
tasklist
echo _____________________________________________________________
echo Press 1 to choose PID
echo Press 2 to choose Process Name
set /p option=
if %option% == 1 goto id
if %option% == 2 goto proc
goto out
:id
set /p pid="Enter the PID of the process you want to kill: "
echo %pid%
taskkill /PID %pid% /F
:proc
set /p processName="Enter the name of the process you want to kill: "
echo %processName%
taskkill /IM %processName%.exe /F
pause

1 Ответ

3 голосов
/ 10 марта 2019

Попробуйте это:

@echo off
title TASKKILL
tasklist
echo _____________________________________________________________
echo Press 1 to choose PID
echo Press 2 to choose Process Name
set /p option=
if "%option%"=="1" goto :id
if "%option%"=="2" goto :proc

goto :out
:id
set /p pid="Enter the PID of the process you want to kill: "
echo %pid%
taskkill /PID %pid% /F

goto :out
:proc
set /p processName="Enter the name of the process you want to kill: "
echo %processName%
taskkill /IM %processName%.exe /F

:out
pause

Вам нужно избегать функций в нормальном потоке, поставив перед ними goto :eof или goto :outbranch.

Таким образом, мое изменение здесь заключалось в добавлении метки :out и добавлении goto :out перед этими двумя функциями .

Обратите внимание, что при использовании if для проверки значения переменной лучше заключить в кавычки и переменную, и проверяемое вами значение и не оставлять пробелов до и после ==, например:

if "%var%"=="value" echo "It's euqal!"

Итак, я изменил if %option% == 1 часть:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...