本帖最后由 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进程示意图:
默认操作示意图:
选择不结束进程示意图(小写n、大写N均可):
选择结束进程示意图(小写y、大写Y均可):
成品(1CB):
根据进程名关闭占用服务端口的进程20220716.zip
(1.13 KB, 下载次数: 41)
成品地址(免费):「根据进程名关闭占用服务端口的进程20220716.bat」https://www.aliyundrive.com/s/Jxw3GZW7QGC 提取码: pk13
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。 |