windows 根据端口号关闭进程脚本

windows 根据端口号关闭进程脚本

bash 复制代码
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
title 端口进程管理工具

:main
cls
echo 端口进程管理工具
echo ========================
echo 1. 批量关闭端口进程
echo 2. 列出所有占用端口的进程
echo 3. 退出
echo.
set /p choice=请选择操作(1-3):

if "%choice%"=="1" goto batch_close
if "%choice%"=="2" goto list_ports
if "%choice%"=="3" exit /b
echo 无效选择,请重新输入
timeout /t 2 >nul
goto main

:batch_close
echo.
:retry_ports
set ports=
set /p "ports=请输入端口号(多个端口用空格/逗号分隔,输入q返回主菜单):"
if /i "%ports%"=="q" goto main

REM 替换分隔符为统一空格格式
set "ports=%ports:,= %"
set "ports=%ports%;= %"
set "ports=%ports% "

REM 初始化结果变量
set processed=0
set closed=0

REM 循环处理每个端口
for %%p in (%ports%) do (
    set port=%%p
    REM 去除端口号两端的空格
    set "port=!port: =!"
    if not "!port!"=="" (
        set /a processed+=1
        
        REM 初始化该端口下的PID集合
        set pid_list=
        
        REM 查找占用该端口的所有PID(去重)
        for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":!port! "') do (
            set pid=%%a
            REM 检查PID是否已记录(避免重复)
            if "!pid_list!"=="" (
                set pid_list=!pid!
            ) else (
                echo !pid_list! | findstr /C:"!pid!" >nul || set pid_list=!pid_list! !pid!
            )
        )
        
        REM 处理去重后的PID集合
        if "!pid_list!"=="" (
            echo [端口 !port!] 无占用进程
        ) else (
            for %%i in (!pid_list!) do (
                echo [端口 !port!] 发现进程 PID: %%i
                taskkill /PID %%i /F >nul 2>&1
                if !errorlevel! equ 0 (
                    echo   [成功] 进程 %%i 已终止
                    set /a closed+=1
                ) else (
                    echo   [失败] 无法终止进程 %%i(可能权限不足)
                )
            )
        )
    )
)

echo.
if !processed! gtr 0 (
    echo 批量操作完成:共处理 !processed! 个端口,终止 !closed! 个进程
) else (
    echo 未输入有效端口号
)

timeout /t 3 >nul
goto retry_ports

:list_ports
echo.
echo 正在扫描活动端口...
netstat -ano | findstr /R ":[0-9]* " | findstr /V "\[::\]" 
echo.
echo 提示:冒号后数字即为端口号(例如 :8080)
pause >nul
goto main
相关推荐
Patrick在香港6 小时前
同一份脚本,mac 正常 Windows 乱码:open() 默认编码实测(附 3.15 终局)
utf-8·windows·python·macos·跨平台·编码·标准库
郭庆汝9 小时前
windows本地部署AgentDesk
windows
笨笨D幸福9 小时前
win11 vhdx/wtg 安装出现问题,提示 Windows 安装程序无法将 Windows 配置为在此计算机的硬件上运行
windows
h397417 小时前
DirectShow过滤器开发-视频源过滤器
c++·windows·音视频·directshow
java资料站1 天前
二、Spring AI Alibaba · ChatModel
java·windows·spring
北冥you鱼1 天前
Go 语言空接口(interface{})使用场景与最佳实践
开发语言·windows·golang
夏虫不可与之言冰1 天前
Windows WSL2 (Ubuntu) 搭建 ESP‑IDF 6.1 开发环境全过程演示
linux·windows·ubuntu·esp32·乐鑫科技·乐鑫eim·乐鑫代理商
打工仔折腾 AI1 天前
FaceFusion本地换脸实战:Windows整合包、模型选择与遮罩调参记录
人工智能·windows·后端·python·深度学习·性能优化·ai agent 实战
小蜗牛狂飙记1 天前
Windows 双击 Jar 包无反应,不用写 bat 脚本!Jarfix 一键修复(以 Struts2 扫描工具为例)
windows·struts·jar
坐看风云变幻1 天前
Betaflight 开发环境搭建保姆级教程(Ubuntu / Windows+WSL / Docker 三方案 + 官方网址大全)
windows·ubuntu·docker·无人机·飞控·betaflight