Windows 系统下端口被占用的解决方法(含一键释放脚本)

发表于 2025-08-17 04:50:01 分类于 默认分类 阅读量 74

Windows 系统下端口被占用的解决方法(含一键释放脚本)

在 Windows 系统开发或调试过程中,经常会遇到端口被占用的问题,导致程序无法启动。本篇文章将介绍如何快速定位并释放端口,并附带一键释放端口脚本,方便开发者使用。


1. 查看端口被哪个进程占用

打开 命令提示符(CMD)PowerShell,输入以下命令:

netstat -ano | findstr :端口号

例如,查看端口 8080

netstat -ano | findstr :8080

输出示例:

TCP    0.0.0.0:8080      0.0.0.0:0      LISTENING      1234
  • 最右边的数字 1234 是占用端口的 PID(进程ID)

2. 找到对应的进程名称

使用 PID 查询进程:

tasklist | findstr 1234

输出示例:

java.exe        1234 Console

说明 PID 为 1234 的进程是 java.exe


3. 杀掉占用端口的进程

如果确认可以结束该进程,执行:

taskkill /PID 1234 /F
  • /F 表示强制结束。
  • 再次运行 netstat -ano | findstr :8080 检查端口是否已释放。

4. 修改程序端口

如果不希望杀掉占用的进程,也可以修改程序使用的端口为未被占用的端口,从而避免冲突。


5. PowerShell 一行命令快速释放端口

在 PowerShell 中,可以直接使用:

Stop-Process -Id (Get-NetTCPConnection -LocalPort 8080).OwningProcess -Force

该命令会直接找到占用端口 8080 的进程并强制结束。


6. 一键释放端口脚本(CMD)

为了方便开发者快速释放端口,这里提供一个 一键释放端口的 CMD 脚本

release-port.cmd

@echo off
REM =======================================
REM Windows 一键释放端口脚本
REM 用法: release-port.cmd 端口号
REM 例如: release-port.cmd 8080
REM =======================================

SET PORT=%1

IF "%PORT%"=="" (
    echo 请指定要释放的端口号,例如: release-port.cmd 8080
    exit /b
)

echo 正在检查端口 %PORT% ...

REM 查询占用该端口的进程 PID
FOR /F "tokens=5" %%A IN ('netstat -ano ^| findstr :%PORT% ^| findstr LISTENING') DO (
    SET PID=%%A
)

IF "%PID%"=="" (
    echo 端口 %PORT% 未被占用。
    exit /b
)

echo 端口 %PORT% 被 PID %PID% 占用,正在结束进程...
taskkill /PID %PID% /F

IF %ERRORLEVEL%==0 (
    echo 成功释放端口 %PORT%。
) ELSE (
    echo 释放端口失败,请以管理员身份运行此脚本。
)
pause

使用方法

  1. 将上面的内容保存为 release-port.cmd
  2. 打开 命令提示符(管理员权限)
  3. 执行脚本并传入端口号,例如:
release-port.cmd 8080
  1. 脚本会自动检测端口是否被占用,如果被占用则杀掉对应进程并释放端口。

7. 小结

  • 使用 netstat -ano 找到占用端口的 PID
  • 使用 tasklist 查找进程名称
  • 使用 taskkill 或 PowerShell 一键结束进程
  • 或使用提供的 CMD 脚本,一键释放端口
  • 或修改程序端口避免冲突

通过以上方法,开发者可以快速解决 Windows 下的端口占用问题,提高开发调试效率。

序章博客
一路向前,山海自平