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不会显示任何东西。

bat脚本启动java jar,项目总结,Java,java,开发语言,bat,脚本

如果想指定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包服务。

bat脚本启动java jar,项目总结,Java,java,开发语言,bat,脚本

3.后台启动bat脚本

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

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

bat脚本启动java jar,项目总结,Java,java,开发语言,bat,脚本

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

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

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

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

bat脚本启动java jar,项目总结,Java,java,开发语言,bat,脚本

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

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

bat脚本启动java jar,项目总结,Java,java,开发语言,bat,脚本
但是,发现通过该命令查找的进程有两个,且将第一个杀掉之后,再次执行该命令查找进程还是能查到。
再次运行该bat,查找命令,同时将name查找出来,会发现,查出来两个进程id是因为wmic本身也算启了一个进程。即可通过执行器的name和执行命令一起查询进程id,杀掉之后再次查询出现没有可以实例即表明该服务已经被停止了:

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

bat脚本启动java jar,项目总结,Java,java,开发语言,bat,脚本
即,同理,停止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

bat脚本启动java jar,项目总结,Java,java,开发语言,bat,脚本
则,只启动一次的,若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.所用资源

脚本资源文章来源地址https://www.toymoban.com/news/detail-546664.html

到了这里,关于bat脚本启动Java服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows下bat脚本启动Java进程cmd中文乱码修复

    建议执行前备份注册表 中文乱码原因: 1、cmd默认展示编码为GBK 2、cmd默认展示字体展示中文会乱码 以下脚本会将cmd窗口字体改为UTF-8,并修改字体为Consolas,需要注意的是,此操作属于永久操作,重新打开cmd即可生效 另外,如需执行条件判断逻辑可以使用 reg query 来先查询出

    2024年02月12日
    浏览(60)
  • Windows环境下,jar程序设置开机自启动。只需三个步骤不用写bat脚本

    本教程讲述 用工具将jar文件生成为Windows自启动服务,此方式比手动编写bat脚本更方便,简单灵活。 下载地址 1.创建一个文件夹,将jar包,winSW.exe工具包都放到一起,将winSW.exe重命名为install.exe 2.创建install.xml文件,将其中的jar文件路径设置成自己的。(xml文件的名称要和ex

    2024年02月15日
    浏览(53)
  • java -jar 启动服务后,关闭命令窗口后服务停止

    问题:当我们用java -jar命令启动服务后,只有一直保持Xshell的窗口开启且正常连接服务器时才能访问服务,当关闭命令窗口时,服务会停止运行 解决:使用nohup命令启动服务 nohup(no hang up):不挂起 只要通过nohup命令启动服务,服务会一直运行 1.安装nohup,查询nohup是否安装

    2024年02月12日
    浏览(48)
  • SpringBoot项目(jar)部署,启动脚本

    SpringBoot项目(jar)部署,需要先关闭原来启动的项目,再启动新的项目。直接输入命令,费时费力,还容易出错。所以,使用脚本启动。 脚本名: start.sh 此脚本需要放置在jar包的同级目录,才能正确找到jar包。 在脚本所在目录,执行如下命令: 一开始,我在给pid赋值时,

    2024年02月10日
    浏览(44)
  • 使用java执行bat、sh脚本文件

    在工作中,由于需求,需要完成让java去调用.bat文件和.sh文件的操作,接下来开始编码 此处用到了糊涂工具类 maven如下 由此代码来执行bat或sh脚本文件(PS:糊涂工具包用不用无所谓,只是用来判断是否为windows系统的)

    2024年02月12日
    浏览(51)
  • jenkins使用shell脚本自动部署java项目,nohup启动不成功

    百度搜索了很长时间,很多种说法,但是都没说太明白,整合了很长时间,测出来了解决方法,仅测试了自由风格项目和流水线项目,其他的选项未测试,jenkins版本2.400。   以下为正文: 执行脚本时,因为jenkins会在构建结束时,将shell运行期间产生的进程全部关闭,所以n

    2024年02月08日
    浏览(38)
  • Windows脚本启动Redis、Java和Nginx服务指南

    接下来,我们将逐步解析这个脚本的各个部分,以便你可以更好地理解它的工作原理。 在本指南中,我们将向您介绍一个用于管理Windows各种服务启动的批处理脚本。这些服务包括Redis、一个基于Java的服务以及Nginx。该脚本检查服务是否正在运行,如果没有,则启动它。 让我

    2024年02月15日
    浏览(48)
  • bat一键批量、有序启动jar

    作用:暂停10s 目的:保证启动顺序 -n 1 告诉ping它应该只尝试一次(通常会尝试4次)。 -w 10000 指定所需的超时(以毫秒为单位)。 nul 已附加,因此ping命令不会在屏幕上输出任何内容。 注意: 192.0.2.x 地址是根据 RFC 3330 保留的,因此在现实世界中绝对不存在。引用规范:

    2024年02月15日
    浏览(39)
  • Ubuntu服务器中java -jar 后台运行Spring Boot项目

    问:我在我的服务器中java -jar 运行springboot项目,但是我操作不了命令了,必须要终止掉才能执行后面的操作,怎么样才能让他后台运行呢?比如我的jar包名是tools-boot-0.0.1-SNAPSHOT.jar 使用nohup命令: 在命令前加上nohup,并通过重定向将输出保存到文件中。例如: 问:这个outp

    2024年02月08日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包