batwindows通过端口杀死进程

Posted xiaostudy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了batwindows通过端口杀死进程相关的知识,希望对你有一定的参考价值。

 

简单的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“】:6001这一行数据,这行数据第5列【"tokens=5"】就是pid

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

以上是关于batwindows通过端口杀死进程的主要内容,如果未能解决你的问题,请参考以下文章

sh 通过端口杀死进程

Window通过cmd查看端口占用相应进程杀死进程等的命令

Window 通过cmd查看端口占用相应进程杀死进程等的命令

八端口占用,杀死进程

Mac系统查看端口占用和杀死进程

Window 通过cmd查看端口占用,杀死进程方法