一、创建稳定无报错 killPort.bat 批处理脚本
1. 新建文件
在项目根目录右键 → 新建「文本文档」,命名为 killPort.txt,粘贴下面完整代码:
bat
@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul
set "port=8080"
echo Check port %port% usage...
set "killedPid="
for /f "tokens=5" %%a in ('netstat -ano ^| findstr /R /C:":%port% "') do (
echo.!killedPid!|findstr "\<%%a\>" >nul || (
echo Kill process PID: %%a
taskkill /F /PID %%a 2>nul
set "killedPid=!killedPid! %%a"
)
)
echo Port process done
exit
2. 关键:另存为 ANSI 编码(解决乱码报错根源)
- 记事本左上角【文件 → 另存为】
- 参数设置:
- 文件名:
killPort.bat - 保存类型:所有文件
- 编码:ANSI
- 文件名:
- 保存覆盖原txt文件,完成脚本创建
脚本作用:自动去重PID,同一个进程只杀一次,不会重复报「进程不存在」错误。
二、IDEA 配置外部工具(Kill8080端口)
- 点击启动下拉框 → 选择【编辑配置...】
- 选中左侧
SpringbootHoutaiApplication启动项 - 右上角点【修改选项】→ 勾选【添加启动前任务】
- 在「启动前」区域点
+→ 选择【运行外部工具】→ 再次点+新建工具
外部工具填写参数
| 配置项 | 填写内容 |
|---|---|
| 名称 | Kill8080端口 |
| 描述 | 解决端口占用问题 |
| 程序 | 浏览选中:D:\IDEAprojects\xuexi\springboot_houtai\killPort.bat(脚本完整绝对路径) |
| 实参 | (留空,不填任何内容) |
| 工作目录 | $ProjectFileDir$(直接粘贴变量) |
- 点击【确定】保存外部工具配置
三、确认启动前任务顺序
此时「启动前」列表会有两个任务:
- 构建
- 外部工具「Kill8080端口」
顺序无需修改,先编译构建、再杀端口、最后启动项目,逻辑正常。点击右下角【应用 → 确定】保存全部运行配置。
四、配套优化:从根源减少端口残留(防止进程关不干净)
- 当前启动配置页面,勾选 使用启动器服务
- IDEA 左上角【文件 → 设置 → 高级设置】
- 找到并勾选:允许终止进程树(Allow process tree termination)
- 应用保存;后续点红色停止按钮,会完整杀死整个Java进程,大幅减少端口残留。
五、运行验证效果
- 点击顶部绿色三角启动项目
- 控制台先执行
killPort.bat:- 若8080被占用:自动查询PID、强制结束占用进程
- 若端口空闲:直接提示端口处理完成,无报错
- 脚本执行完毕,自动启动 SpringBoot 项目
✅ 实现效果 :永远不用手动改端口、手动杀进程,启动自动释放8080端口
常见问题兜底说明
- 运行报
'xxx' 不是内部命令→ 脚本编码不是ANSI,重新另存为ANSI格式 - 反复提示
process not found→ 已用去重脚本修复,不会重复杀同一个PID - 外部工具找不到bat文件 → 核对「程序」路径为完整绝对路径,不要截断路径