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

posted @ 2025-04-29 22:34  李文学  阅读(32)  评论(0)    收藏  举报