我想让这个批处理实现
**
根据输入的端口号,输出该端口占用信息
如果未被占用,提示端口空闲
如果被占用,输出占用端口的进程信息和操作选项
可通过选项快速结束占用端口的进程
**
顺带说一下我是win10环境下用PowerShell运行的
@echo off
:a
cls
set port=
set /p port=请输入端口号:
cls
if not defined port goto :a
set pid=
set prog=
for /f "tokens=2,4,5" %%a in ('netstat -ano^|find /i ":%port% "') do if not "%%c"=="" (set pid=%%c) else (set pid=%%b)
if defined pid (
set "pid=%pid: =%"
for /f "skip=3 tokens=1" %%a in ('tasklist /fi "pid eq %pid%"') do (
echo 端口号:%port%
echo PID:%pid%
echo 进程:%%a
)
set user_input=
set /p user_input=请选择操作a、结束进程 b、取消操作:
echo 您的选择是:%user_input%
if "%user_input%" == "a" (
taskkill /f /fi "pid eq %pid%"
set result=%ERRORLEVEL%
if "%result%"=="1" ( echo 已经结束进程,按任意键返回 )
)
if "%user_input%" == "b" (
goto :a
)
pause>nul
goto :a
)
if not defined pid (
echo 未发现占用端口进程,按任意键返回
pause>nul
goto :a
)
exit
查询进程信息都还算正常,但是选择操作那一步用choice和set /p获取到的选择项要么为空要么就不是我输入的值,是不是之前输入端口号对这里有影响?请问各位如何解决这个问题。