一、前言
由于项目需要在本地调试,写成bat文件执行xxxx.jar文件,正常我们执行后台命令start %JAVA_HOME%\bin\javaw.exe -jar XXX.jar,是能启动程序,但是后台找到的进程是javaw.exe,如果出现多个jar启动,我们不知道停止那个应用,所以需要对进程起名。
- 方式一:
使用拷贝javaw.exe重命名的方式:copy "%JAVA_HOME%\bin\javaw.exe" "%JAVA_HOME%\bin\XXX.exe",这样我们就可以找到具体的进程名称了。 - 方式二:
直接去java的路径下手动复制一份javaw.exe,然后设置项目名,这里以xxl-job-admin.jar为例。
二、bat命令
@echo off
::检测后台是否已经在运行
:begin
echo 后台程序运行信息如下:
tasklist /nh|find /i "javaw.exe"
if ERRORLEVEL 1 (goto activate) else (goto activated)
::如果后台已经在运行,则提示,并询问
:activated
echo.
echo 后台正在运行中...
echo.
echo 请输入以下命令
echo S 关闭后台(shutdown)
echo R 重启后台(restart)
echo E 退出(exit)
echo.
set /p commandActivated=输入您的命令:
if "%commandActivated%"=="S" (goto shutdownService) else if "%commandActivated%"=="R" (goto restartService) else (goto exitCmd)
::关闭后台
:shutdownService
taskkill -f -t -im javaw.exe
echo.
echo 项目已关闭
goto begin
::重启后台
:restartService
taskkill -f -t -im javaw.exe
echo.
echo 项目已关闭
goto startService
::如果后台没有在运行,则提示,并询问
:activate
echo.
echo 后台未运行
echo.
echo 请输入以下命令
echo S 启动后台(start)
echo E 退出(exit)
echo.
set /p commandActivate=输入您的命令:
if "%commandActivate%"=="S" (goto startService) else (goto exitCmd)
::启动后台
:startService
start javaw -jar xxl-job-admin-2.3.0.jar
set countdown=30
for /L %%a in (
%countdown%,-1,0
) do (
echo.
echo 项目正在启动,请不要退出...
echo.
echo %countdown%秒后将自动检查启动情况
echo 还剩余 %%a 秒
ping -n 2 localhost 1>nul 2>nul
cls
)
echo.
echo 后台程序运行信息如下:
tasklist /nh|find /i "javaw.exe"
if ERRORLEVEL 1 (goto startError) else (goto startSuccess)
::启动失败
:startError
echo.
echo 项目启动失败,请检查相关配置
goto begin
::启动成功
:startSuccess
echo.
echo 项目已启动
goto begin
::退出
:exitCmd
echo.
echo 您可以关闭这个窗口或按任何键将退出
pause > nul