@echo off REM 牛只数据管理后端启动脚本 (Windows版本) REM 使用方法: start.bat [start|stop|restart|status] setlocal enabledelayedexpansion set APP_NAME=cattletends set JAR_NAME=cattletends-1.0.0.jar set APP_PORT=8080 set JAVA_OPTS=-Xms512m -Xmx1024m set SPRING_PROFILE=prod set LOG_FILE=log.out set PID_FILE=pid.%APP_NAME%.txt REM 获取脚本所在目录 set SCRIPT_DIR=%~dp0 set JAR_PATH=%SCRIPT_DIR%target\%JAR_NAME% REM 检查jar文件是否存在 if not exist "%JAR_PATH%" ( echo 错误: 找不到jar文件: %JAR_PATH% echo 请先执行 mvn clean package 打包项目 exit /b 1 ) if "%1"=="start" goto start if "%1"=="stop" goto stop if "%1"=="restart" goto restart if "%1"=="status" goto status goto usage :start echo 正在启动应用: %APP_NAME% REM 检查是否已经运行 for /f "tokens=2" %%a in ('jps -l ^| findstr "%JAR_NAME%"') do ( echo 应用已经在运行中,PID: %%a exit /b 1 ) REM 启动应用 start /b java %JAVA_OPTS% -Dspring.profiles.active=%SPRING_PROFILE% -Dserver.port=%APP_PORT% -jar "%JAR_PATH%" > "%LOG_FILE%" 2>&1 timeout /t 3 /nobreak >nul REM 查找进程 for /f "tokens=2" %%a in ('jps -l ^| findstr "%JAR_NAME%"') do ( echo 应用启动成功,PID: %%a echo %%a > %PID_FILE% echo 日志文件: %LOG_FILE% echo 查看日志: type %LOG_FILE% exit /b 0 ) echo 应用启动失败,请查看日志: %LOG_FILE% exit /b 1 :stop echo 正在停止应用: %APP_NAME% REM 查找进程并停止 for /f "tokens=2" %%a in ('jps -l ^| findstr "%JAR_NAME%"') do ( echo 找到进程 PID: %%a taskkill /F /PID %%a >nul 2>&1 echo 应用已停止 if exist %PID_FILE% del %PID_FILE% exit /b 0 ) echo 应用未运行 if exist %PID_FILE% del %PID_FILE% exit /b 0 :restart echo ========== 重启应用: %APP_NAME% ========== call :stop timeout /t 2 /nobreak >nul call :start exit /b %errorlevel% :status for /f "tokens=2" %%a in ('jps -l ^| findstr "%JAR_NAME%"') do ( echo 应用运行中,PID: %%a echo 端口: %APP_PORT% echo 日志: %LOG_FILE% exit /b 0 ) echo 应用未运行 exit /b 0 :usage echo 使用方法: %0 {start^|stop^|restart^|status} echo. echo 参数说明: echo start - 启动应用 echo stop - 停止应用 echo restart - 重启应用 echo status - 查看应用状态 exit /b 1