Windows操作系统下,提示端口被占用,怎么解决?【本文还支持,直接输入端口,Y结束进程的脚本】
- 经验分享
- 时间:2023-12-16 13:45
- 1729人已阅读
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
在Windows操作系统下,如果我们不小心搞的导致服务端口被占用,怎么解决?
解决方案:
假设端口为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,关机重启
4.杀掉6312的进程
taskkill /pid 6312 -t -f
搞定。
上面操作,是不是很麻烦?可不可以搞个脚本处理呢?
需求:在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