吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1536|回复: 22
收起左侧

[其他转载] 【批处理】根据进程名关闭占用服务端口的进程(适用于java、php等大部分语言)

[复制链接]
zhangbo093 发表于 2022-7-16 17:34
本帖最后由 zhangbo093 于 2022-7-16 17:36 编辑

背景介绍:日常工作中,常用IDEA,经常遇到右上角停止不了项目的问题(导致IDEA假死),特别是微服务项目打开任务管理器结束进程又分不清要结束哪些进程,故有此想法,写个批处理,方便快捷,此批处理也适用其他服务进程(如:php.exe等)。现分享给大家,欢迎交流学习,大佬勿喷。谢谢!

@echo off
setlocal enabledelayedexpansion
:start1
title 根据进程名关闭占用服务端口的进程。作者:zhangbo093 
echo  ------------------------------------------------------------------------------------------------------
echo ┃  --------------------------------------------------------------------------------------------------  ┃
echo ┃ ┃   _______      _____      ______        ____        _____    _____    _________                  ┃ ┃
echo ┃ ┃  ┃  _____┃    / ___ `.   ┃_   __ \    .'    `.     ┃_   _┃  ┃_   _┃  ┃_   ___  ┃                 ┃ ┃
echo ┃ ┃  ┃ ┃____     ┃_/___) ┃     ┃ ┃__) ┃  /  .--.  \      ┃ ┃      ┃ ┃      ┃ ┃_  \_┃                 ┃ ┃
echo ┃ ┃  '_.____''.   .'____.'     ┃  ___/   ┃ ┃    ┃ ┃   _  ┃ ┃      ┃ ┃      ┃  _┃  _                  ┃ ┃
echo ┃ ┃  ┃ \____) ┃  / /____      _┃ ┃_      \  `--'  /  ┃ ┃_' ┃     _┃ ┃_    _┃ ┃___/ ┃                 ┃ ┃
echo ┃ ┃   \______.'  ┃_______┃   ┃_____┃      `.____.'   `.___.'    ┃_____┃  ┃_________┃  By zhangbo093  ┃ ┃
echo ┃ ┃                                                                                                  ┃ ┃
echo ┃  --------------------------------------------------------------------------------------------------  ┃
echo  ------------------------------------------------------------------------------------------------------
echo.
rem 清空进程名,防止使用上次输入的进程名称
set pname=
set /p pname=请输入需要关闭占用服务端口的进程名(直接回车,默认为java.exe):
rem 如果用户未输入,则默认为java.exe
if not defined pname (
    echo 用户未输入进程名,默认为java.exe
    set pname=java.exe
)
echo.
echo 检查%pname%进程开始
rem 根据进程名遍历进程信息
for /f "delims=" %%i in ('tasklist^|findstr "%pname%"') do (
    rem 遍历进程信息获取进程PID
    for /f "tokens=2 delims= " %%b in ("%%i") do (
        rem 记录进程PID
        set pid=%%b
        rem 记录进程占用服务端口信息
        set ports=
        rem 遍历进程PID占用服务端口信息
        for /f "delims=" %%a in ('netstat -nao^|findstr %%b^|findstr "LISTENING"^|find "[::]:0"') do (
            for /f "tokens=2,5 delims= " %%a in ("%%a") do (
                if defined ports (
                    set ports=!ports!、%%a
                )
                if not defined ports (
                    set ports=%%a
                )
            )
        )
        rem 如果占用了服务端口,则提示用户选择是否结束对应进程
        if defined ports (
            set var=
            set /p var=进程名:%pname%,进程PID:!pid!,占用端口:!ports:[::]:=!,是否确认结束此进程?[Y/N]:
            if not defined var (
                echo 用户未选择,默认不处理
            )
            if defined var (
                if /i "!var!" NEQ "Y" (
                    echo 用户选择不处理
                )
                if /i "!var!" NEQ "N" (
                    echo 用户选择结束此进程,开始处理
                    taskkill /pid %%b -t -f
                )
            )
        )
        echo.
    )
)

@pause
cls&goto start1


java进程示意图:
PID17396.jpg

默认操作示意图:
001.jpg

选择不结束进程示意图(小写n、大写N均可):
002.jpg

选择结束进程示意图(小写y、大写Y均可):
003.jpg

成品(1CB): 根据进程名关闭占用服务端口的进程20220716.zip (1.13 KB, 下载次数: 40)

成品地址(免费):「根据进程名关闭占用服务端口的进程20220716.bat」https://www.aliyundrive.com/s/Jxw3GZW7QGC 提取码: pk13
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

免费评分

参与人数 2吾爱币 +5 热心值 +2 收起 理由
AON + 1 谢谢@Thanks!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| zhangbo093 发表于 2022-7-16 23:57
WGT 发表于 2022-7-16 20:24
试了没效果。。。

什么语言?如果找不到进程pid和占用的端口,可以先试试命令,验证一下:
是否能显示进程信息的命令(注意:进程名要写对哦)
tasklist|findstr "java.exe"
进程pid对应端口信息的命令(注意:10086为上面命令结果中的pid)
netstat -nao|findstr 10086|findstr "LISTENING"
 楼主| zhangbo093 发表于 2022-7-17 00:04
落华无痕 发表于 2022-7-16 19:57
编码UTF8没改成ANSI吧。话说,怎么不是根据占用端口号提示结束对应进程。

假如有5个微服务启动了,那么要输入5次对应端口号才行。这个只输入一次进程名就可以找到5个微服务啦,岂不快哉?
我就是今天启动这几个微服务,明天启动另外几个微服务,又经常停不掉(idea假死),才想办法写了这个批处理程序的。
dork 发表于 2022-7-16 17:40
裴冰夏 发表于 2022-7-16 17:49
已存 蟹蟹
平淡最真 发表于 2022-7-16 17:56
5-15行已抄走
cn2jp 发表于 2022-7-16 19:02
为什么我把代码另存为bat运行会出错?
 楼主| zhangbo093 发表于 2022-7-16 19:47
cn2jp 发表于 2022-7-16 19:02
为什么我把代码另存为bat运行会出错?

可否把报错信息发一下呢?或者下载成品试试看呢?一起看看是哪里报错了,谢谢!
落华无痕 发表于 2022-7-16 19:57
zhangbo093 发表于 2022-7-16 19:47
可否把报错信息发一下呢?或者下载成品试试看呢?一起看看是哪里报错了,谢谢!

编码UTF8没改成ANSI吧。话说,怎么不是根据占用端口号提示结束对应进程。
woflant 发表于 2022-7-16 20:11

大佬果然思路清奇
wkdxz 发表于 2022-7-16 20:19
很实用,谢谢了!
WGT 发表于 2022-7-16 20:24
试了没效果。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-30 12:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表