我的编程空间,编程开发者的网络收藏夹
学习永远不晚

bat脚本启动Java服务

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

bat脚本启动Java服务

bat脚本启动Java服务

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 beginstart 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 offfor /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    )):breakif 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 offfor /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=9001echo 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.jarjava -jar myzhxy-1.0.0.jar:breakpause

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.所用资源

脚本资源

来源地址:https://blog.csdn.net/weixin_43763430/article/details/127946943

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

bat脚本启动Java服务

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用windows bat脚本命令一键启动MySQL服务

这篇文章主要介绍如何使用windows bat脚本命令一键启动MySQL服务,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!@echo offrem Copyright (c) 2019 Moses and/or it
2023-06-08

mysql.server - MySQL 服务器启动脚本

mysql.server 会将位置更改为 MySQL 安装目录。然后它将调用 mysqld_safe。要以特定用户身份运行服务器,可以将适当的用户选项添加到全局 /etc/my.cnf 选项文件的 [mysqld] 组中。它将位置更改为My
2023-10-22

mysqld_safe - MySQL 服务器启动脚本

什么是mysqld_safemysqld_safe命令被认为是在Unix上启动mysqld服务器的正确方式。它添加了某些安全功能,例如在发生错误时重新启动服务器,并将运行时信息记录到错误日志中。它尝试启动一个名为mysqld的可执行文件。为
2023-10-22

自动重启服务的shell脚本代码

#!/bin/bash if [ ! -f /tmp/down_count ];then echo "0" > /tmp/down_count fi curl -I tomcat-host -o "/tmp/status" >/dev/nu
2022-06-04

CentOS Tomcat的启动服务脚本怎么写

CentOS Tomcat的启动服务脚本怎么写,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1. tomcat 自带的 jsvc, 这个工具会启动2个线程,如果
2023-06-10

linux bash脚本监控启动停止weblogic服务的脚本写法

有时,linux系统需要做HA或者类似的功能,需要配置weblogic脚本来启动,停止,查看状态,可以如下方式写 命令形式:Weblogic server start|stop|restart|status### BEGIN WLS Con
2022-06-04

linux和windows下的自动ftp脚本(shell bat)

一、先来看linux下的:#! /bin/bashcd /ftp/CURRENTDATE=` date +%Y%m%d `YESTERDAY=` date -d yesterday +%Y%m%d `THREEDAYAGO=` date -
2022-06-04

如何实现IP动态切换bat脚本

这篇文章将为大家详细讲解有关如何实现IP动态切换bat脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。新建"IP切换脚本.bat"文件,将下列代码复制进去,保存,并加入启动项,这样每次开机的时候选择你的
2023-06-08

怎么用bat脚本实现自动关机

这篇文章主要介绍“怎么用bat脚本实现自动关机”,在日常操作中,相信很多人在怎么用bat脚本实现自动关机问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用bat脚本实现自动关机”的疑惑有所帮助!接下来,请跟
2023-06-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录