Java Spingboot jar程序在Windows下使用bat的cmd命令以后台进程和注册服务两种方式启动
@echo off
title dbsync setup
rem jar平级目录
set AppName=test-admin.jar
set pid=
set image_name=
rem JVM参数
set JAVA_HOME=%~dp0jdk\windows\jdk1.8.0_421
set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
set PATH=%JAVA_HOME%\bin;%SystemRoot%/system32;%SystemRoot%;
set JVM_OPTS="-Duser.timezone=Asia/Shanghai -Xms512m -Xmx16384m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=1024m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
call :help
:help
ECHO.
ECHO. [1] 后台进程启动
ECHO. [2] 关闭后台进程
ECHO. [3] 重启后台进程
ECHO. [4] 后台进程状态
ECHO. [5] 安装服务并启动
ECHO. [6] 停止服务并卸载
ECHO. [7] 退出
ECHO.请输入选择项目的序号:
set /p ID=
IF "%id%"=="0" GOTO start0
IF "%id%"=="1" GOTO start
IF "%id%"=="2" GOTO close
IF "%id%"=="3" GOTO restart
IF "%id%"=="4" GOTO status
IF "%id%"=="5" GOTO InstallService
IF "%id%"=="6" GOTO UninstallService
IF "%id%"=="7" EXIT
IF "%id%"=="" GOTO help
IF "%id%"==" " GOTO help
goto:help
:start0
set pid=
set image_name=
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
set pid=%%a
set image_name=%%b
)
if not "%pid%"=="" ( echo %image_name% 正在运行,无法启动新的实例
) else (
java -jar %JVM_OPTS% -Dloader.path=%~dp0conf,%~dp0lib %~dp0lib\%AppName%
)
goto:help
:start
echo.启动中 . . .
set pid=
set image_name=
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
set pid=%%a
set image_name=%%b
)
if not "%pid%"=="" ( echo %image_name% 正在运行,无法启动新的实例 ) else (
start javaw -jar %JVM_OPTS% -Dloader.path=%~dp0conf,%~dp0lib %~dp0lib\%AppName%
rem 等待几秒
ping 127.0.0.1 -n 15 > nul
)
set pid=
set image_name=
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
set pid=%%a
set image_name=%%b
)
if not "%pid%"=="" ( echo.启动%AppName%成功 ) else ( echo.启动%AppName%失败 )
pause
goto:help
rem 函数stop通过jps命令查找pid并结束进程
:close
echo.关闭中 . . .
set pid=
set image_name=
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
set pid=%%a
set image_name=%%b
)
if "%pid%"=="" (echo 进程 %AppName% 不存在) else (
echo 准备杀死 %image_name%
echo 准备杀死 %pid% ...
rem 根据进程ID, 杀死进程
taskkill /f /pid %pid%
rem 等待几秒
ping 127.0.0.1 -n 6 > nul
)
set pid=
set image_name=
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
set pid=%%a
set image_name=%%b
)
if "%pid%"=="" ( echo.关闭%AppName%成功 ) else ( echo.关闭%AppName%失败 )
pause
goto:help
:restart
echo.关闭中 . . .
set pid=
set image_name=
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
set pid=%%a
set image_name=%%b
)
if "%pid%"=="" (
echo 进程 %AppName% 不存在
) else (
echo 准备杀死 %image_name%
echo 准备杀死 %pid% ...
rem 根据进程ID, 杀死进程
taskkill /f /pid %pid%
)
rem 等待几秒
ping 127.0.0.1 -n 6 > nul
echo.启动中 . . .
set pid=
set image_name=
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
set pid=%%a
set image_name=%%b
)
if not "%pid%"=="" (echo %image_name% 正在运行,无法启动新的实例 ) else (
start javaw -jar %JVM_OPTS% -Dloader.path=%~dp0conf,%~dp0lib %~dp0lib\%AppName%
echo.启动 %AppName% 成功
rem 等待几秒
ping 127.0.0.1 -n 15 > nul
)
set pid=
set image_name=
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
set pid=%%a
set image_name=%%b
)
if not "%pid%"=="" ( echo.重启%AppName%成功 ) else ( echo.重启%AppName%失败 )
pause
goto:help
:status
set pid=
set image_name=
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
set pid=%%a
set image_name=%%b
)
if "%pid%"=="" ( echo 进程%AppName%不存在 ) else ( echo 进程%AppName%正在运行 )
pause
goto:help
rem 注册为Windows服务需要借助服务注册工具:nssm.exe,开源工具,自己下载最新版即可
:InstallService
set pid=
set image_name=
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
set pid=%%a
set image_name=%%b
)
if not "%pid%"=="" ( echo %image_name% 正在运行,无法启动新的实例 ) else (
%~dp0/bin/nssm.exe install %AppName% %JAVA_HOME%\bin\java.exe
%~dp0/bin/nssm.exe set %AppName%AppParameters -jar %JVM_OPTS% -Dloader.path=%~dp0conf,%~dp0lib %~dp0lib\%AppName%
%~dp0/bin/nssm.exe set %AppName% DisplayName %AppName%
%~dp0/bin/nssm.exe set %AppName% Description %AppName%
%~dp0/bin/nssm.exe set %AppName% AppDirectory %~dp0
%~dp0/bin/nssm.exe set %AppName% AppStdout nul
%~dp0/bin/nssm.exe set %AppName% AppStderr nul
sc start %AppName%
rem 等待几秒
ping 127.0.0.1 -n 15 > nul
)
sc query DbSync-Client | find "RUNNING" > nul
if %ERRORLEVEL% == 0 (
echo.服务"%AppName%"启动成功
) else (
echo.服务"%AppName%"启动失败
)
pause
goto:help
:UninstallService
echo prepare to stop the service %AppName%
%~dp0/bin/nssm.exe stop %AppName%
rem 等待几秒
ping 127.0.0.1 -n 5 > nul
%~dp0/bin/nssm.exe remove %AppName% confirm
pause
goto:help
pause
更多推荐



所有评论(0)