我想创建一个批处理文件以根据用户的选择按ID或名称杀死进程。例如,如果他选择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
答案 0 :(得分:3)
尝试一下:
@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
部分:)