本地启动多个Java微服务,因为停电或者内存回收原因,IDEA直接退出;再次启动各个服务会提示端口占用。
每次都cmd输入命令手动Kill比较繁琐,可以把此脚本放在桌面上作为一个小工具,运行即可。
代码(核心部分是chatGPT自动生成)
java
@echo off
REM 关闭命令回显,这意味着命令本身不会显示在命令提示符窗口中,只有命令的输出会显示
rem 命令开启了局部变量环境,并启用了延迟变量扩展,使得在循环或代码块内部更改的变量可以立即使用其新值。
setlocal enabledelayedexpansion
REM 定义要查找的端口列表,用空格分隔
set /p PORTS="enter the port numbers, separated by spaces: "
echo your input are: %PORTS%
REM 循环通过每个端口
for %%p in (%PORTS%) do (
REM 使用netstat找到对应端口的PID,然后使用taskkill杀掉进程
for /f "tokens=5" %%a in ('netstat -ano ^| findstr "LISTENING" ^| findstr ":%%p"') do (
set PID=%%a
REM 杀掉对应PID的进程
taskkill /PID !PID! /F
REM 输出被杀掉的进程信息
if !errorlevel! equ 0 (
echo Successfully killed process with PID !PID! on port %%p
) else (
echo Failed to kill process with PID !PID! on port %%p
)
)
)
endlocal