Windows批量开启/关闭jar

5,215 阅读1分钟

Windows下批量启动/关闭java程序

最近公司要将一批微服务部署到windows server上,对于微服务项目来说,一次要部署多个jar包是让人崩溃的,所以这里想做一个批量运行\停止的脚本。

批量启动:

  • cmd下,java -jar ####.jar运行后窗口不能关闭,但是有多个jar包,则会开启多个cmd窗口,非常难受。
  • cmd下,javaw -jar ####.jar运行后窗口可以关,但如果有多个jar,就回存在进程中有许多相同的javaw进程,无法区分是哪个jar,很难去关闭特定某个jar的进程。

如何解决

  • 为了解决多个cmd窗口的问题;通过bat文件批量执行jar文件,每个包用start javaw -jar ####.jar来运行。
  • 为了解决进程难以区分问题;通过复制javaw.exe为对应jar包的文件名称来执行jar包,比如eureka.jar,复制javaw.exeeureka.exe,然后start eureka -jar eureka.jar,这样进程中就是eureka
  • 如果jar之间有执行依赖,则通过ping来给前一个jar提供执行时间。

案例如下

@echo off

set javaw="%JAVA_HOME%\bin\javaw.exe"

echo ******start qis-eureka.jar******

set eureka="%JAVA_HOME%\bin\eureka.exe"

rem 复制文件

if not exist  %eureka% (

  copy %javaw% %eureka%

)

start	eureka -jar qis-eureka-0.0.1.jar

rem 等待8秒,ping一次1秒

ping -n 8 127.0.0.1>nul

echo ******start qis-getway.jar******

set getway="%JAVA_HOME%\bin\getway.exe"

if not exist  %getway% (

  copy %javaw% %getway%

)

start	getway -jar qis-getway-0.0.1.jar

exit

批量停止

在上面我们知道为每个jar制定了进程的名称,于是,停止的脚本如下:

@echo off

taskkill /f /t /im eureka.exe
taskkill /f /t /im getway.exe

exit

参考

blog.csdn.net/qq_35160012…

www.jianshu.com/p/7c010dbd2…

www.e-learn.cn/topic/16356…