windows bat脚本 启动和停止程序

start.bat

@echo off
setlocal EnableDelayedExpansion
rem 以管理员方式运行cmd
PUSHD %~DP0 & cd /d "%~dp0"
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof
:runas
rem fill in your own execution script
rem before, close all Java processe
start taskkill /f /im javaw.exe
rem 杀死进程停止5秒,防止程序还在运行
ping 127.0.0.1 -n 3
rem 启动nacos、redis、minio
start /d "E:\nacos\bin" startup.cmd
start /d "E:\redis" startup.bat
start /d "E:\minio" minio.bat
rem 启动服务
rem start cmd /c "title system && java -jar -Dfile.encoding=utf-8 D:\gengbao\basic\ops-system.jar &"
rem echo 执行完毕,按任意键退出
rem pause >nul
exit


stop.bat

@echo off
chcp 65001
setlocal EnableDelayedExpansion
rem 以管理方式运行cmd
PUSHD %~DP0 & cd /d "%~dp0"
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof
:runas
rem =====================
rem 多个端口
rem 会杀死外地占用端口调用本地端口的进程
rem 设置监听的端口号
set obj[0]=8848
set obj[1]=6379
set obj[2]=9000
set obj[3]=9031

set port=0
set pid=0
rem 从环境中拿去变量obj开头的,遍历,再通过=切割,然后去拿第一二列,%%a就是循环的变量开始
rem 那么%%a就是例如obj[2],%%b就是例如9000
echo port : %port%
for /f "usebackq delims== tokens=1-2" %%a in (`set obj`) do (
	set port=%%b
	for /f "tokens=5" %%m in ('netstat -ano ^| findstr ":%%b"') do (
		set pid=%%m
	)
	if "!pid!"=="0" (
        echo 端口号【!port!】没有被占用,不需要杀死
    ) else (
        taskkill /f /pid !pid!
		echo 端口号【!port!】相关进程已杀死
    )
    set pid=0
)
echo 操作完成
pause

rem =====================
rem 单个端口
rem 设置监听的端口号
rem set port=6379
rem echo port : %port%
rem for /f "usebackq tokens=1-5" %%a in (`netstat -ano ^| findstr %port%`) do (
rem		if [%%d] EQU [LISTENING] (
rem			set pid=%%e
rem		)
rem )
rem for /f "usebackq tokens=1-5" %%a in (`tasklist ^| findstr %pid%`) do (
rem		set image_name=%%a
rem )
rem echo now will kill process : pid %pid%, image_name %image_name%
rem taskkill /f /pid %pid%

rem =====================

rem 直接关闭所有的cmd窗口,默认的窗口名称是C:\Windows\system32\cmd.exe
rem taskkill /f /t /fi "windowtitle eq C:\Windows\system32\cmd.exe" /im cmd.exe
rem 直接某个已知名称的进程
rem taskkill /f /im notepad.exe
pause

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值