zoukankan      html  css  js  c++  java
  • 【bat】【windows】通过端口杀死进程

    简单的bat处理,把指定端口集合杀死相应的进程,就是杀死对应的pid

    @echo off & setlocal EnableDelayedExpansion
    
    set obj[0]=6340
    set obj[1]=6330
    set obj[2]=1010
    set obj[3]=6301
    set obj[4]=6001
    
    set port=0
    set pid=0
    
    for /f "usebackq delims== tokens=1-2" %%a in (`set obj`) do (
        set port=%%b
        for /f "tokens=5" %%m in ('netstat -aon ^| findstr ":%%b"') do (
            set pid=%%m
        )
        if "!pid!"=="0" (
            echo 端口号【!port!】没有占用
        ) else (
            echo 端口号【!port!】相关进程以杀死
            taskkill /f /pid !pid!
        )
        set pid=0
    )
    
    pause

    运行结果

    1、一个端口都没有被占用情况

     2、有一个6001端口被占用情况

     

    讲解

    bat是没有数组的,

    set obj[0]=6340
    set obj[1]=6330
    set obj[2]=1010
    set obj[3]=6301
    set obj[4]=6001

    可以看做事5个变量

    第一个for循环【for /f "usebackq delims== tokens=1-2" %%a in (`set obj`) do (】就是从环境中拿去变量obj开头的,有多少个就遍历多少遍,再通过=切割【delims==就是用=切割】

    tokens=1-2就是拿去第一二列,%%a就是循环的变量开始【可以不是a,也可以是i】,那么%%a就是例如obj[0],%%b就是例如6001

    第二个for循环【for /f "tokens=5" %%m in ('netstat -aon ^| findstr ":%%b"') do (】就是从netstat -aon ^| findstr ":6001“【^是取消转义字符|,等同于命令行netstat -aon | findstr ":6001“】这个查所有端口占用情况中发现:6001这多行数据,这行数据第5列【"tokens=5"】就是pid

    杀死pid【taskkill /f /pid !pid!】

    修改版【上面那个会杀死外地占用端口调用本地端口的进程,这个是只杀死本地占用的端口】

    @echo off & setlocal EnableDelayedExpansion
    
    title 杀死端口
    
    for %%a in (6340,6330,1010,6301,6001) do (
        set pid=0
        for /f "tokens=2,5" %%b in ('netstat -ano ^| findstr ":%%a"') do (
            set temp=%%b
            for /f "usebackq delims=: tokens=1,2" %%i in (`set temp`) do (
                if %%j==%%a (
                    taskkill /f /pid %%c
                    set pid=%%c
                    echo 端口号【%%a】相关进程以杀死
                ) else (
                    echo 不是本机占用端口【%%a】
                )
            )
        )
        if !pid!==0 (
           echo 端口号【%%a】没有占用
        )
    )
    
    echo 操作完成
    
    pause
  • 相关阅读:
    Bzoj 3624: [Apio2008]免费道路 (贪心+生成树)
    [ZJOI2008]杀蚂蚁antbuster 题解
    赛前集训的第一个小总结(希望?)
    Bzoj1972: [Sdoi2010]猪国杀 题解(大模拟+耐心+细心)
    Luogu2150 寿司晚宴
    「考试总结2020-08-03」可期
    Luogu4747 [CERC2017]Intrinsic Interval
    BZOJ2839 集合计数
    Luogu5369 [PKUSC2018]最大前缀和
    Luogu5772 [JSOI2016]位运算
  • 原文地址:https://www.cnblogs.com/xiaostudy/p/11674053.html
Copyright © 2011-2022 走看看