@echo off

rem jar平级目录
set AppName=park-application.jar
set appPort=28080

set JarPath=./out/park-application.jar

set Env=test

rem JVM参数
set JVM_OPTS="-Dapp.name=%AppName% -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"


ECHO.
	ECHO.  [1] 启动%AppName%
	ECHO.  [2] 关闭%AppName%
	ECHO.  [3] 重启%AppName%
	ECHO.  [4] 启动状态 %AppName%
	ECHO.  [6] 关闭Nginx
	ECHO.  [5] 退 出
ECHO.

ECHO.请输入选择项目的序号:
set /p ID=
	IF "%id%"=="1" GOTO start
	IF "%id%"=="2" GOTO stop
	IF "%id%"=="3" GOTO restart
	IF "%id%"=="4" GOTO status
	IF "%id%"=="6" GOTO stopNginx
	IF "%id%"=="7" GOTO startNginx
	IF "%id%"=="5" EXIT
PAUSE

:stopNginx
   taskkill /f /fi "imagename eq nginx.exe"
goto:eof

:start
    set pid=
    for /f "usebackq tokens=2,5" %%a in (`netstat -ano ^| findstr  %appPort%`) do (
		set pid=%%b
		set image_name=%%a
	)
   if  defined pid (
        echo %%pid is running
        exit /b
   )

echo javaw %JVM_OPTS% -jar %JarPath% --spring.profiles.active=%Env%
start javaw %JVM_OPTS% -jar %JarPath% --spring.profiles.active=%Env%

echo  starting……
echo  Start %AppName% success...
goto:eof

rem 函数stop通过jps命令查找pid并结束进程
:stop
    set pid=
	for /f "usebackq tokens=2,5" %%a in (`netstat -ano ^| findstr  %appPort%`) do (
		set pid=%%b
		set image_name=%%a
	)
	if not defined pid (echo process %AppName% does not exists) else (
		echo prepare to kill %image_name%
		echo start kill %pid% ...
		rem 根据进程ID，kill进程
		taskkill /f /t /pid %pid%
	)
goto:eof
:restart
    call :stop
    call :start
goto:eof
:status
	for /f "usebackq tokens=2,5" %%a in (`netstat -ano ^| findstr  %appPort%`) do (
		set pid=%%b
		set image_name=%%a
	)
	if not defined pid (echo process %AppName% is dead ) else (
		echo %image_name% is running
	)
goto:eof
