netstat -ano是Windows原生命令,可立即列出所有端口及对应PID;通过findstr过滤目标端口,再用tasklist查PID对应进程名,或用PowerShell中Get-NetTCPConnection一步获取端口、状态、PID和进程名。

当你在Windows上启动Web服务、数据库或本地开发服务器时,遇到“端口已被占用”报错,必须立刻确认哪个进程正霸占着那个端口号——netstat命令就是系统原生的端口登记簿,它不依赖任何安装包,开机即用。
查清所有监听和连接中的端口
按下 Win + R,输入 cmd 回车,打开命令提示符。
执行命令:netstat -ano。
输出中重点关注三列:本地地址(含冒号后端口号,如 127.0.0.1:8080)、状态(LISTENING 表示该端口正被程序守着,ESTABLISHED 表示已有活跃连接)、PID(最右一列纯数字,是进程唯一身份证)。
UDP条目没有状态字段,只看“协议”列是否为 UDP,“本地地址”列是否有目标端口即可判断是否被占用。
快速锁定某个具体端口
方法一:精准过滤(推荐)
在已打开的命令提示符中,输入:netstat -ano | findstr ":3306"(把 3306 换成你要查的实际端口号,冒号不能省,否则会匹配 13306、33060 等干扰项)。
方法二:宽松匹配(备用)
若方法一无返回,可能是系统版本对格式敏感,可试:netstat -ano | findstr "3306"。
只要输出里有内容,最后一列数字就是该端口的 PID;如果完全没输出,说明这个端口当前空闲,可放心使用。
根据PID找出是哪个程序在作祟
第一步:记下上一步得到的 PID,例如 12345。
AI 领域系统学习体系。管理知识图谱、深度学习笔记、实战复盘和关联网络。触发场景:学习计划、知识图谱更新、深度研究某个 AI 主题、实战复盘总结、调研后沉淀知识、每周学习回顾。当用户说'学了什么'、'总结一下'、'沉淀知识'、'复盘'、'更新图谱'、'深入研究'、'写笔记'、'学习回顾'、'review what...
第二步:在同个命令提示符窗口中,输入:tasklist | findstr "12345"。
第三步:查看输出中“映像名称”列的内容,比如 java.exe、mysqld.exe 或 chrome.exe——这就是真凶文件名。
注意:如果这一步没结果,大概率是权限不足。请关闭当前窗口,右键“命令提示符”,选择“以管理员身份运行”,再重试上面两步。
用PowerShell一步到位查端口+进程名
右键“开始”按钮 → 选择“Windows PowerShell(管理员)”。
输入命令:Get-NetTCPConnection -LocalPort 8080 | ForEach-Object { [PSCustomObject]@{Port=$_.LocalPort; State=$_.State; PID=$_.OwningProcess; ProcessName=(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name} }(把 8080 替换为你的真实端口号)。
回车后直接看到端口、状态、PID 和进程名四栏并排结果,不用手动拼接,也避开了 tasklist 对中文路径或特殊字符的兼容问题。










