TECH NOTES / 部署与运维

Spring Boot Jar 自动重启批处理笔记

原笔记 2023-11-07 · 整理于 2026-10-05

整理 Windows 批处理重启 Jar 的旧脚本,说明时间单位、前台阻塞与进程识别问题。

已修正:timeout /t 的单位为秒,普通 java -jar 会阻塞后续批处理,所以示例改为后台启动。此处按端口查 PID 的逻辑仍只适合单一服务的隔离测试环境,实际使用必须确认进程归属;定时重启不能代替故障排查。口令从事先配置的环境变量读取。

batch
@echo off
rem 这是一个自动重启网关的批处理脚本,每隔20分钟自动执行一次

set "jar_path=C:\apps\demo\demo.jar"
set project_port=29000
set /a restart_interval_seconds=20*60

:stop
echo Stopping the GatewayStarter project...
for /f "tokens=5" %%a in ('netstat -ano ^| findstr :%project_port%') do (
    taskkill /pid %%a /f >nul 2>&1
)

rem 等待5秒钟
timeout /t 5 >nul

:run
echo Starting the GatewayStarter project...
start "" /b java -Dfile.encoding=utf-8 -Dserver.port=%project_port% -jar "%jar_path%" --jasypt.encryptor.password=%JASYPT_ENCRYPTOR_PASSWORD%


timeout /t %restart_interval_seconds% /nobreak >nul
goto stop

参考:Windows timeout、Windows start。

文章配图