本文作者:DurkBlue

Windows通过端口查询PID来重启进程程序推荐

DurkBlue 今天 13
Windows通过端口查询PID来重启进程程序摘要:         1.自动重启的脚本如下:(比如打开一个端口7000来启动device.jar,想要重...

        1.自动重启的脚本如下:(比如打开一个端口7000来启动device.jar,想要重启device.jar)

        

@echo off & setlocal EnableDelayedExpansion
set obj[0]=7000
set port=0
set pid=0
for /f "usebackq delims== tokens=1-2" %%a in (`set obj`) do (
    set port=%%b
    for /f "tokens=4" %%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
)

# 重启改端口所创建的进程(隐藏方式)
start /b device.jar


可以看做事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就是例如7000


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


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


注意如果程序占用的固定端口采用的是UDP协议 PID的列数是“4”,如果如果程序占用的固定端口是TCP协议则PID的列数是“5”需要将“【"tokens=4"】”改为“【"tokens=5"】”


这篇文章由DurkBlue发布,转载请注明来处
文章投稿或转载声明

来源:DurkBlue版权归原作者所有,转载请保留出处。本站文章发布于 今天
温馨提示:文章内容系作者个人观点,不代表DurkBlue博客对其观点赞同或支持。

赞(0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享