当前位置: 首页 > ai >正文

部署springBoot项目的脚本-windows

重启 restart.bat

说明:这里判断pid时,是通过端口查找到pid,然后在通过wmic 确认属于xxx.jar

@echo off
setlocal enabledelayedexpansionset JAR_NAME=xxx.jar
set port=8230
set LOG_DIR=logs\xxx
REM 创建日志目录
if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
rem 获取当前主机的所有端口号,循环判断当前端口是否已开启
for /f "usebackq tokens=1-5" %%a in (`netstat -ano ^| findstr %port%`) do (if [%%d] EQU [LISTENING] (set port-pid=%%e)
)
echo port-pid: %port-pid%if defined port-pid (for /f "skip=1 tokens=*" %%a in ('wmic process where "ProcessId='%port-pid%'" get CommandLine 2^>nul') do (set "cmdline=%%a"echo CommandLine=!cmdline!if not "!cmdline!"=="!cmdline:%JAR_NAME%=!" (echo compare successset "pid=%port-pid%"echo pid: !pid!goto break))
):breakecho restarting...
if defined pid (rem stopcall taskkill /f /pid %pid% >nul 2>&1if errorlevel 1 (echo Failed to stop the server.) else (echo Stop Success!)timeout /t 2 /nobreak >nul
)
echo starting collect program...
rem 配置jar包绝对路径
start "" /B javaw -jar "%JAR_NAME%" >> "%LOG_DIR%\app.log"
echo Starting Success!
pause
@echo off
setlocal enabledelayedexpansionrem 设置服务端口号
set JAR_NAME=xxx.jar
set port=8230
rem 获取当前主机的所有端口号,循环判断当前端口是否已开启
for /f "usebackq tokens=1-5" %%a in (`netstat -ano ^| findstr %port%`) do (if [%%d] EQU [LISTENING] (set port-pid=%%e)
)
echo port-pid: %port-pid%if defined port-pid (for /f "skip=1 tokens=*" %%a in ('wmic process where "ProcessId='%port-pid%'" get CommandLine 2^>nul') do (set "cmdline=%%a"echo CommandLine=!cmdline!if not "!cmdline!"=="!cmdline:%JAR_NAME%=!" (echo compare successset "pid=%port-pid%"echo pid: !pid!goto break))
):breakecho stopping...
if "%pid%"=="" (echo PID not found. Server may not be running.
)
if defined pid (call taskkill /f /pid %pid% >nul 2>&1if errorlevel 1 (echo Failed to stop the server.) else (echo Stop Success!)
)
pause

maven打包时,可以将脚本打包跟jar包在同一个目录

   <fileSet><directory>bin/windows</directory><includes><include>restart.bat</include><include>stop.bat</include></includes><outputDirectory>/</outputDirectory></fileSet>
http://www.xdnf.cn/news/7374.html

相关文章:

  • C++(25): 标准库 <deque>
  • 迅联文库开发日志(三)登陆注册
  • esp32课设记录(四)摩斯密码的实现 并用mqtt上传
  • Springboot 跨域拦截器配置说明
  • JavaScript 学习
  • DW_DMAC简介
  • 嵌入式学习笔记 D22:栈与队列
  • 编排优先——Go 语言开发 AI 智能体的设计与实现
  • 专为MoE设计的“超级工厂”,来了
  • 跨境业务服务器架构设计与CN2线路深度调优
  • Spring Boot 接口定义指南:构建高效的RESTful API
  • 【第二届帕鲁杯】第二届帕鲁杯畸行的爱完整wp
  • RSP-BSP-1
  • 生成式人工智能认证(GAI认证)在企业中的认可度怎样?
  • 基于 STM32 的自动温度巡检小车控制系统设计与实现
  • 第五天的尝试
  • 经典算法复习——快速模幂
  • 51单片机点亮一个LED介绍
  • C++ 函数对象、仿函数与 Lambda 表达式详解
  • 12.vue整合springboot首页显示数据库表-实现按钮:【添加修改删除查询】
  • 深入Java G1 GC调优:如何解决高延迟与吞吐量瓶颈
  • 嵌入式学习笔记 - STM32独立看门狗IWDG与窗口看门狗WWDG的区别
  • HTTPS实验室——TLS/TLCP一站式解决方案
  • C语言——深入理解指针(一)
  • rosbag使用记录
  • 搭建一个永久免费的博客
  • Java设计模式之组合模式:从入门到精通(保姆级教程)
  • Java 泛型详解
  • 黄仁勋Computex演讲:将于三季度推出下一代GB300系统,个人AI计算机DGX Spark已全面投产
  • 进程和线程有什么区别?多线程有什么优缺点?线程的创建方式有哪些?如何简单的使用线程?用户线程和守护线程有什么区别?start 和 run 方法有什么区别?