Windows系统查看端口占用
@echo off
setlocal EnableDelayedExpansion
:menu
rem cls命令清除屏幕内容,类似Linux中clear命令
cls
echo =======================================
echo = =
echo = 端口占用查询工具 =
echo = =
echo = 1.查询端口占用情况 =
echo = =
echo = 2查看所有使用中的端口 =
echo = =
echo = 0.退出 =
echo = =
echo =======================================
set /p chose="请选择:[1,2,0]"
if "%chose%" =="1" ( goto checkPort )
if "%chose%" =="2" ( goto showAllPort )
if "%chose%" =="0" (
exit
) else (
echo 您确定选择了1或者2,要不再试试?
pause
goto menu
)
:checkPort
cls
setlocal
rem 输入查询的端口号
echo.
set /p port="请输入一个端口号(如:8080):"
rem 执行netstat -aon | findstr "0.0.0.0:%port%"命令
rem 这里的^|为逆转字符
rem 通过for循环以及tokens的方式取出第2列和第五列
for /f "tokens=2,5" %%i in ('netstat -aon ^| findstr "0.0.0.0:%port%"') do (
rem 判断第二列中的值是否与需要查询的值0.0.0.0:端口相等,如果相等就将第五列的数据即该端口进程所占用的系统进程号PID赋值给变量pid
if "%%i"=="0.0.0.0:%port%" (
echo.
echo [提示]您本次查询的端口{%port%}占用进程号为:%%j
echo.
set pid=%%j
)
)
rem 对变量pid的判断
if "%pid%" == "" (
rem 如果pid为空,表示该端口未被占用
echo 端口未被占用
) else (
rem 如果pid不为空,查询该进程的详细信息
for /f "tokens=1-5" %%i in ('tasklist ^| findstr "%pid%"') do (
if "%%j"=="%pid%" (
echo 映像名称 PID 会话名 会话# 内存使用
echo ========================= ======== ================ =========== ============
echo %%i %%j %%k %%l %%mKB
)
)
set /p var="需要停止该进程吗[PID=%pid%]?(Y/n):"
if /i "!var!" == "Y" (
echo [提示]正在停止进程...
taskkill /f /pid %pid%
) else (
echo [提示]您取消了停止进程或其他错误!
)
)
endlocal
pause
goto menu
:showAllPort
cls
netstat -ano | findstr "0.0.0.0:"
pause
goto menu
rem Powered by xqdev.org xqlee
http://blog.xqlee.com/article/26.html