Windows操作系统下,提示端口被占用,怎么解决?【本文还支持,直接输入端口,Y结束进程的脚本】

  • 作者: 凯哥Java(公众号:凯哥Java)
  • 经验分享
  • 时间:2023-12-16 13:45
  • 1729人已阅读
简介 在Windows操作系统下,如果我们不小心搞的导致服务端口被占用,怎么解决?

🔔🔔🔔好消息!好消息!🔔🔔🔔

有需要的朋友👉:联系凯哥 微信号 kaigejava2022

在Windows操作系统下,如果我们不小心搞的导致服务端口被占用,怎么解决?

9f77733fe24022692368d043a7fbaf77.png

解决方案:

假设端口为8083

1.启动cmd, 执行命令netstat -ano|findstr  8083,会查询出占用端口号的进程号,这时候执行命令

 taskkill -f -pid 进程号   杀死进程,然后重启Tomcat即可解决


2.若方法一查询不到进程,(假设使用IDEA)则在Run- Edit Configurations中删掉添加的Tomcat,之后再重新配置Tomcat及其artifacts等,可解决

3.若还是不行,Ctrl Shift Delete 打开资源管理器,关掉Idea和Java jvm的进程,重新打开idea 尝试运行

4,关机重启

实操截图:

1.win+R 进入cmd

2.输入

netstat -ano | findstr 80831

3.查看对应的进程是什么

80fb733f2136b7bb027307f2c09c7fab.png

4.杀掉6312的进程

taskkill /pid 6312 -t -f

7c1662e5ba925b9ce954ba40b05986ef.png

搞定。


上面操作,是不是很麻烦?可不可以搞个脚本处理呢?

需求:在Windows操作系统中,输入指定端口,查看是否有服务使用。如果有,输入Y或N。当输入Y时候,就kill 掉这个服务。如果输入N,则在命令窗口输出端口使用信息。这样的bat脚本怎么写?

要实现这个功能,你可以使用以下的批处理脚本(.bat):

@echo off  
set /p port=请输入端口号:   
netstat -ano | findstr :%port%  
setlocal enabledelayedexpansion  
set "result=!errorlevel!"  
if "!result!"=="0" (  
    echo 端口 %port% 正在被使用。  
    set /p action=要终止服务吗?(Y/N):   
    if /i "%action%"=="Y" (  
        taskkill /F /IM *%port%*  
        echo 服务已终止。  
    ) else (  
        echo 服务保持运行。  
    )  
) else (  
    echo 端口 %port% 没有被使用。  
)  
pause

这个脚本首先要求用户输入一个端口号,然后使用netstat命令查找该端口是否被使用。如果端口被使用,它会询问用户是否要终止服务。如果用户输入"Y",则使用taskkill命令终止该服务。如果用户输入"N",则输出端口的使用信息。如果端口没有被使用,它会输出相应的信息。请注意,这个脚本只能终止使用该端口的第一个进程。如果有多个进程使用同一个端口,它只会终止其中一个进程。如果你需要终止所有使用该端口的进程,你需要修改脚本或使用其他工具。

修改上面脚本。如果多个进程使用同一个端口,循环终止

@echo off  
set /p port=请输入端口号:   
netstat -ano | findstr :%port%  
setlocal enabledelayedexpansion  
set "result=!errorlevel!"  
if "!result!"=="0" (  
    echo 端口 %port% 正在被使用。  
    set /p action=要终止服务吗?(Y/N):   
    if /i "%action%"=="Y" (  
        for /f "tokens=2 delims=:" %%i in ('netstat -ano ^| findstr :%port%') do (  
            taskkill /F /IM %%i  
        )  
        echo 所有使用该端口的进程已终止。  
    ) else (  
        echo 服务保持运行。  
    )  
) else (  
    echo 端口 %port% 没有被使用。  
)  
pause





TopTop