win项目启动端口被占用解决办法

杀掉8212端口号

```

netstat -ano | findstr :8212

tasklist | findstr 26428

taskkill /F /PID 26428

```

image

 

推荐个windows的bat执行脚本,保存成.bat就行,管理员运行,代码如下


@echo off
:: 设置代码页为 UTF-8(65001)
chcp 65001 >nul
setlocal enabledelayedexpansion

:: 检查是否以管理员身份运行
net session >nul 2>&1
if errorlevel 1 (
    echo 错误:请以管理员身份运行此脚本。
    pause
    exit /b
)

:INPUT_LOOP
:: 提示用户输入端口号
echo.
echo 请在下方输入要查询的端口号(必须为数字),然后按回车键继续...
set /p port=端口号:

:: 检查是否输入了端口号
if "%port%"=="" (
    echo 错误:未输入端口号!
    goto INPUT_LOOP
)

:: 校验输入是否为数字
set "is_number=true"
for /f "delims=0123456789" %%i in ("%port%") do (
    set "is_number=false"
)
if "%is_number%"=="false" (
    echo 错误:端口号必须为数字,请重新输入!
    goto INPUT_LOOP
)

:: 检查端口号范围(可选)
if %port% lss 1 (
    echo 错误:端口号不能小于 1,请重新输入!
    goto INPUT_LOOP
)
if %port% gtr 65535 (
    echo 错误:端口号不能大于 65535,请重新输入!
    goto INPUT_LOOP
)

:: 使用 netstat 查询端口占用情况
set found_pid=false
for /f "tokens=5" %%a in ('netstat -ano ^| findstr :%port%') do (
    set pid=%%a
    set found_pid=true
)

if not !found_pid!==true (
    echo 未找到端口 %port% 的占用信息。
    pause
    exit /b
)

tasklist /FI "PID eq %pid%"

:: 使用 tasklist 查询进程名称、用户名和内存占用
set process_name=
set user_name=
for /f "usebackq tokens=1,2,5 delims=," %%b in (`tasklist /FI "PID eq %pid%" /FO CSV /NH 2^>nul`) do (
    :: 去除多余的引号和空格
    set raw_user_name=%%~c
    set user_name=!raw_user_name:"=!

)

echo.

:: 判断进程类型
if "!user_name!"=="" (
    echo 无法判断进程类型。
) else (
    echo !user_name! | findstr /i "SYSTEM LocalService NetworkService" >nul
    if errorlevel 1 (
        echo 该进程为用户进程。
    ) else (
        echo 警告:该进程为系统进程!可能需要管理员权限才能终止。
    )
)

echo.

:: 提示用户是否杀死进程,并明确等待用户输入
:KILL_CHOICE_LOOP
set /p kill_choice=是否杀死占用端口 %port% 的进程 [Y/N]?

echo.

:: 校验用户输入
if /i "%kill_choice%"=="Y" (
    echo 正在尝试杀死进程 PID %pid%...
    taskkill /PID %pid% /F
    if errorlevel 1 (
        echo 杀死进程失败,请检查权限或进程是否已退出。
    ) else (
        echo 进程 PID %pid% 已成功杀死。
    )
) else if /i "%kill_choice%"=="N" (
    echo 不杀死进程,操作已取消。
) else (
    echo 输入无效,请输入 Y 或 N。
    goto KILL_CHOICE_LOOP
)

echo.

:: 暂停,等待用户按键退出
pause

 

posted @ 2025-12-02 11:20  蜗牛使劲冲  阅读(8)  评论(0)    收藏  举报