Java-启动JAR管理脚本-bat版
Java-启动JAR管理脚本-BAT版
@echo off chcp 65001 >nul :: 设置应用程序路径 set "APP_NAME=vote-admin-back-0.0.1-SNAPSHOT.jar" set "APP_PATH=..\%APP_NAME%" :: 获取当前日期,格式为:年-月-日 for /f "tokens=2 delims==" %%a in ('wmic os get LocalDateTime /format:"table" ^| find "LocalDateTime"') do ( set "CURRENT_DATE=%%a" set "CURRENT_DATE=%CURRENT_DATE:~0,10%" ) :: 设置日志路径,按天存储 set "LOG_PATH=..\logs\%APP_NAME:~0,-4%_%CURRENT_DATE%.log" :: 创建日志目录 if not exist "..\logs" mkdir "..\logs" :MENU cls echo. echo ================================= echo JAR应用程序管理工具 echo ================================= echo. echo "1、 启动应用程序" echo "2、 停止应用程序" echo "3、 重启应用程序" echo "4、 查看当天应用日志" echo "5、 查看指定七天内应用日志" echo "6、 实时查看应用日志" echo "7、 退出" echo. echo ================================= :GET_CHOICE set /p choice=请输入选项 [1-7]: if "%choice%"=="" goto GET_CHOICE for /f "delims=01234567" %%a in ("%choice%") do ( if "%%a" neq "" goto INVALID_CHOICE ) if "%choice%"=="1" goto START if "%choice%"=="2" goto STOP if "%choice%"=="3" goto RESTART if "%choice%"=="4" goto VIEW_TODAY_LOG if "%choice%"=="5" goto VIEW_SPECIFIC_LOG if "%choice%"=="6" goto VIEW_REALTIME_LOG if "%choice%"=="7" goto END :INVALID_CHOICE echo 无效的选项,请输入 1-7 之间的数字! timeout /t 2 /nobreak >nul goto MENU :START echo 正在启动应用程序... call :LOG "尝试启动应用程序..." :: 将标准输出和标准错误输出都重定向到日志文件 java -Dfile.encoding=UTF-8 -jar "%APP_PATH%" >> "%LOG_PATH%" 2>&1 echo 应用程序已启动。 call :LOG "应用程序已启动" pause goto MENU :STOP echo 正在停止应用程序... call :LOG "尝试停止应用程序..." taskkill /F /IM java.exe >nul 2>&1 if errorlevel 1 ( echo 错误:未找到正在运行的应用程序。 call :LOG "错误:未找到正在运行的应用程序" ) else ( echo 应用程序已停止。 call :LOG "应用程序已停止" ) pause goto MENU :RESTART echo 正在重启应用程序... call :LOG "尝试重启应用程序..." call :STOP call :START goto MENU :VIEW_TODAY_LOG echo 正在查看当天应用日志... if exist "%LOG_PATH%" ( start notepad "%LOG_PATH%" ) else ( echo 当天日志文件不存在! call :LOG "查看当天日志失败:日志文件不存在" ) pause goto MENU :VIEW_SPECIFIC_LOG echo 请输入要查看日志的日期(格式:年-月-日,例如 2025-04-29): set /p specific_date= set "SPECIFIC_LOG_PATH=..\logs\%APP_NAME:~0,-4%_%specific_date%.log" if exist "%SPECIFIC_LOG_PATH%" ( start notepad "%SPECIFIC_LOG_PATH%" ) else ( echo 指定日期的日志文件不存在! call :LOG "查看指定日期日志失败:日志文件不存在,日期:%specific_date%" ) pause goto MENU :VIEW_REALTIME_LOG echo 正在实时查看应用日志(按 Ctrl + C 停止查看)... :REALTIME_LOOP if exist "%LOG_PATH%" ( type "%LOG_PATH%" | findstr /r /v "^$" ) else ( echo 日志文件不存在! ) timeout /t 3 /nobreak >nul goto REALTIME_LOOP pause goto MENU :END echo 退出应用程序管理工具... call :LOG "退出应用程序管理工具" pause exit /b :LOG echo [%date% %time%] %* >> "%LOG_PATH%" exit /b
文件另存为:restart.bat