bat脚本启动Java服务

news2024/11/22 21:25:26

bat脚本启动Java服务

    • 1.终端cmd窗口运行jar
    • 2. bat脚本启动jar包
    • 3.后台启动bat脚本
    • 4. 运行bat只启动一次jar服务及停止脚本
    • 5.注意事项
    • 6.所用资源

1.终端cmd窗口运行jar

Java项目一般会被打包成jar后启动,在windows系统中可以通过终端窗口cmd启动jar包,即在jar包所在的目录中打开cmd,或在cmd中进入到jar包目录,执行如下命令:

java -jar myzhxy-1.0.0.jar
或 
javaw -jar myzhxy-1.0.0.jar
// java.exe会在窗口中打印信息,而javaw.exe不会显示任何东西。

在这里插入图片描述

如果想指定jar包启动时用的配置文件,可用-Dspring.config.location指定配置文件路径,这样即可达到配置文件参数可修改的目的:

java -jar myzhxy-1.0.0.jar -Dspring.config.location=D:\config\application.properties

2. bat脚本启动jar包

创建一个bat文件,将上面的命令放入bat文件即可,之后只需要将bat和jar包放在同一个目录下,双击bat脚本即可启动jar包服务。

在这里插入图片描述

3.后台启动bat脚本

以上的bat脚本双击运行后会出现黑色cmd的终端窗口,若不想出现该窗口,可让其后台启动运行,这样就可以避免不小心关闭了创建运行,即可在脚本开头加入以下代码:

if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin

在这里插入图片描述

4. 运行bat只启动一次jar服务及停止脚本

通过bat脚本后台启动jar服务后,可能会出现在启动之前,该服务要使用的端口已经被占用,或者说该服务已经被启动,则需要将被占用的端口释放掉,且事先需要判断该jar服务是否被启动,如果已经在启动状态,则不需要重新启动。

查找端口是否被占用,如果端口被占用则将该端口的进程杀掉:

netstat -ano |findstr 9001 // 根据端口号查进程
taskkill /f /pid 8224  // 根据进程id杀进程

在这里插入图片描述

由于端口有可能是被其他服务占用,所以要判断该jar服务是否被启动就不能再通过端口是否被占用来判断了。这时可以用wmic通过执行jar包的命令去查找进程(思路来源于:Java调用执行python脚本 )

wmic process where 'commandline like "%myzhxy-1.0.0.jar%"' get processid

在这里插入图片描述
但是,发现通过该命令查找的进程有两个,且将第一个杀掉之后,再次执行该命令查找进程还是能查到。
再次运行该bat,查找命令,同时将name查找出来,会发现,查出来两个进程id是因为wmic本身也算启了一个进程。即可通过执行器的name和执行命令一起查询进程id,杀掉之后再次查询出现没有可以实例即表明该服务已经被停止了:

wmic process where 'name = "java.exe" and commandline like "%myzhxy-1.0.0.jar%"' get processid,name

在这里插入图片描述
即,同理,停止jar服务的bat脚本也只能停止指定jar的服务,通过端口停止进程也有可能停止的是其他的服务。停止jar服务的bat脚本代码如下:

@echo off

for /f "usebackq skip=1 tokens=*" %%I in (`wmic process where "name = 'java.exe' and commandline like '%%myzhxy-1.0.0.jar%%'" get processid 2^>null`) do (
    echo %%I
    if %%I GTR 1 (
        echo processid is: %%I
        set pid=%%I
        goto break
    )
)

:break

if defined pid (
    echo pid = %pid%
    echo taskkill /f /pid %pid%
    taskkill /f /pid %pid%
    echo Succeeded in killing the process.
) else echo The process does not exit.

pause

在这里插入图片描述
则,只启动一次的,若jar服务已启动则不启动,没有启动则先查看端口是否被其他进程占用,占用则释放端口后再启动的bat脚本代码如下:

@echo off

for /f "usebackq skip=1 tokens=*" %%I in (`wmic process where "name = 'java.exe' and commandline like '%%myzhxy-1.0.0.jar%%'" get processid 2^>null`) do (
    if %%I GTR 1 (
        echo processid is: %%I
        set pid=%%I
        goto break
    )
)

set port=9001
echo port=%port%

for /f "usebackq tokens=1-5" %%a in (`netstat -ano ^|findstr %port%`) do (
    if [%%d] EQU [LISTENING] (
        set pid=%%e
    )
)

if defined pid (
    echo pid = %pid%
    echo taskkill /f /pid %pid%
    taskkill /f /pid %pid%
    echo Succeeded in killing the process.
) else echo The process does not exit.

echo java -jar myzhxy-1.0.0.jar
java -jar myzhxy-1.0.0.jar

:break

pause

5.注意事项

  • bat语法中,不能想Java一样使用break来终止for循环,而是使用 goto的方式来跳出循环。
  • bat中 比较符号 表示如下:
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
  • bat中定义变量set port=9001 等号两边不能有空格,否则是错误命令行。
  • 使用wmic命令获取的进程,要判断是否获取到进程id不能判断其是否为空字符,且判断获取的%%I是否大于1,中%%I不能加中括号,[%%I],否则被当成字符形式,一直满足判断条件。导致终止不了for循环

6.所用资源

脚本资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/20645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5G无线技术基础自学系列 | 移动通信网络的架构

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 第五代(5thGeneraton, 5G) …

计算机中的第一个伟大发明(IR/IAR)

计算机工具的普及极大的推动了科技领域的发展以及提高人们生活的便捷性,那么在其中有哪些举足轻重的发明呢?本节我们来了解一下计算机中第一个伟大的发明:指令寄存器和指令地址寄存器 回顾在步进器加持下的两数两加 前面提到两个数相加的执行…

PyCharm运行PyQT6 (四) 百篇文章学PyQT

本文章是百篇文章学PyQT的第四篇,本文讲述如何使用PyCharm成功运行PyQT6,PyCharm在配置过程中会遇到很多问题,博主在本篇文章中将遇到和踩过的坑总结出来,可以供大家参考,希望大家安装顺利。包括 安装、遇到问题的解决…

Intel芯片、AMD显卡有多强?M1系列呢?

我们知道英特尔是半导体行业和计算创新领域的全球领先厂商 ,创始于1968年。如今,英特尔正转型为一家以数据为中心的公司 。英特尔与合作伙伴一起,推动人工智能、5G、智能边缘等转折性技术的创新和应用突破 ,驱动智能互联世界。…

【由浅入深 - Java笔记】玩转List:List过滤和筛选

文章目录List过滤:Comparator、Comparable 和 Stream1. 使用list的Stream进行筛选2. 增强for循环遍历元素,进行筛选3. 使用list.foreach遍历4. 使用iterator遍历5. 视频笔记List过滤:Comparator、Comparable 和 Stream 花时间精力去凿许多浅井…

5G无线技术基础自学系列 | 移动通信网络的演进

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 随着移动用户数量的不断增加&#xff0…

mac系统安装搭载Windows系统虚拟机方法教程

我们都知道macOS系统虽然相对windows系统而言更稳定,但macOS系统中可使用的软件数量较windows系统而言要少很多。对于macOS系统应用少的问题,我们可以使用虚拟机来解决。那么,苹果虚拟机好用吗?整体而言是可以的。苹果虚拟机怎么装…

0-搭建nodejs环境

1) 安装 nvm nvm 即 (node version manager),好处是方便切换 node.js 版本 安装注意事项 要卸载掉现有的 nodejs提示选择 nvm 和 nodejs 目录时,一定要避免目录中出现空格选用【以管理员身份运行】cmd 程序来执行 nvm 命令首次运行前设置好国内镜像地…

小马哥的CSS驿站

目录 第一章 CSS概述 1.1语法 1.2注释 1.3CSS的创建 第二章 CSS选择器 1.id选择器 2.class选择器 3.标签选择器 4.子代选择器 5.后代选择器 6.相邻兄弟选择器 7.后续兄弟选择器 8.交集选择器 9.并集选择器 第三章 CSS样式 1.文本与文字样式 (1&…

G2O学习 - 曲线拟合实例

学习使用G2O进行曲线拟合使用 1. 拟合目的,如何建立拟合的图模型 大概就是曲线拟合,求曲线 y ax^2 bx c 中 abc 的值。 但是我一直不明白如何获得下面图的。 我觉得应该是这样的 首先把abc视为一个变量,这个变量应该是一个矩阵【这里还…

Python和Pycharm安装教程

一、Python安装 1.进入官网下载Python 官网地址:Download Python | Python.org 官网下载可能会有些慢,请耐心等待 我这里把3.11的安装包和后面的Pycharm安装包都放到网盘里面了 链接:https://pan.baidu.com/s/1spxNUbH4trWBox1SJeBjkQ?pwdh…

Linux CentOS 系统安装

VMware 下载地址 Ctrl F 搜索【下载试用版】VMware 下载地址 Ctrl F 搜索【DOWNLOAD NOW】VMware-workstation-full-16.2.4-20089737.exe 文件下载地址CentOS 下载地址 Ubuntu 下载地址 阿里巴巴开源镜像站-OPSX镜像站 1、下载安装VMware虚拟机 2、下载Linux系统镜像&…

TCP/UDP/Socket 通俗讲解

1.封包和拆包 封包,就是发送数据前把自己本地需要发送的数据包装一下,即把要发送的原始数据附加上接受者可以辨识到自己身份等一些额外信息。有点像寄一封信,信封上填写的寄件人和收件人以及地址。 拆包,是接收到对方封包后发送来…

强化学习领域值得关注的国际顶级会议

导读: 强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达…

目标检测论文解读复现之十三:改进YOLOv5s的遥感图像目标检测

前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文&#xff0c…

LeetCode 0799. 香槟塔

【LetMeFly】799.香槟塔 力扣题目链接:https://leetcode.cn/problems/champagne-tower/ 我们把玻璃杯摆成金字塔的形状,其中 第一层 有 1 个玻璃杯, 第二层 有 2 个,依次类推到第 100 层,每个玻璃杯 (250ml) 将盛有香…

几何算法——介绍

几何算法——介绍介绍1 关于几何引擎介绍2 关于模型的表达2.1 CSG (Constructive Solid Geometry )表示2.2 Brep (Boundary Representation)表示3 关于翼边结构和半边结构3.1 翼边结构3.2 半边结构4 关于边界表示法4.1 ACIS中的Brep表示很早之前就想写一些几何算法相关的文章&a…

一汽大众迈腾车前悬架系统设计

目 录 摘要 I Abstract II 第一章 绪论 1 1.1选题背景及意义 1 1.2国内外的研究现状 1 1.3本文的主要研究内容 3 第二章 悬架的结构分析与整体参数设计 4 2.1悬架系统的简介与分类 4 2.1.1悬架系统的简介 4 2.1.2悬架系统的分类 5 2.2独立悬架的特点 5 2.3整体参数的设计 6 2.3…

VM Tools安装过程

系列文章目录 VM Tools安装过程 VM Tools安装过程系列文章目录一、VM Tools安装步骤二、安装后无法使用问题解决办法之一一、VM Tools安装步骤 此时系统会弹出装载虚拟CD驱动器 点击打开文件 打开文件后可将 文件夹里的文件全部复制到自己的某个文件夹中,比如桌面 注…

延误件如何筛选 物流查询分享查询方法筛选延误三天以上物流件

当你拥有大量快递单号需要查询时,如何快速查询出每个单号的物流信息呢?分析物流更新是否及时,有没有延误,今天小编给大家分享一款软件批量查询物流,并且筛选出延误件,一起来看看吧! 第一步&…