配置.bar文件时若是出现乱码情况则配置
CHCP 65001
若想要配置选项执行选择的方式则需要配置
rem 设置各种参数
set "port=8080"
set "pid=0"
rem 设置选项
ECHO.
ECHO. [2] 关闭
ECHO. [5] 退 出
ECHO.
rem 选项对应的代码
ECHO.请输入选择项目的序号:
set /p ID=
IF "%id%"=="2" GOTO stop rem 跳转到方法名为 stop 的方法
IF "%id%"=="5" EXIT
PAUSE
goto:eof
:stop rem 方法名
rem 所需要处理的逻辑
goto:eof rem 该方法到这结束
若使用时想要执行完命令后不退出则在最后添加
rem 用于定义一个循环的起始点
:loop
rem 命令用于等待1秒钟
timeout /t 1 >nul
rem 命令跳转回循环的起始点
goto loop
以下是配置.bat文件查询状态和结束进程整体逻辑
@echo off
rem 若输出的是中文乱码则加这个
CHCP 65001
rem 设置各种参数
rem jar平级目录
set "AppName=ruoyi-admin.jar"
set "port=8087"
set "isPortUsed=false"
set "pid=0"
set "image_name=0"
rem 设置选项
ECHO.
ECHO. [2] 关闭%AppName%
ECHO. [4] 启动状态 %AppName%
ECHO. [5] 退 出
ECHO.
rem 选项对应的代码
:menu
echo
ECHO.请输入选择项目的序号:
set /p ID=
IF "%id%"=="2" GOTO stop
IF "%id%"=="4" GOTO status
IF "%id%"=="5" EXIT
PAUSE
goto:eof
rem 函数stop通过jps命令查找pid并结束进程
:stop
rem tokens取第几列若不知道可以直接执行 netstat -ano | findstr "%port%"看一下
rem delims分割符 默认提取第一列
rem 根据端口号结束进程
for /f "tokens=5" %%a in ('netstat -ano ^| findstr "%port%"') do (
set "pid=%%a"
set "isPortUsed=true"
)
rem 根据jsp命令结束进程 注需要执行一下 Java -v如果是版本号则可以使用
for /f %%a in ('jps -l ^| findstr %AppName%') do (
set "isPortUsed=true"
set "pid=%%a"
)
if %isPortUsed%==true (
echo 杀死端口 %port% 的进程,进程ID为 %pid%
call :menu
) else (
echo 端口 %port% 未被占用
call :menu
)
goto:eof
:status
rem 根据端口号查询
for /f "tokens=5" %%a in ('netstat -ano ^| findstr /r /c:"^ *TCP.*:%port%.*LISTENING"') do (
set "pid=%%a"
set "isPortUsed=true"
)
rem 根据jsp命令查询 注需要执行一下 Java -v如果是版本号则可以使用
for /f %%a in ('jps -l ^| findstr %AppName%') do (
set "pid=%%a"
set "isPortUsed=true"
)
if %isPortUsed%==true (
echo 端口 %port% 已被占用,进程ID为 %pid%
call :menu
) else (
echo 端口 %port% 未被占用
call :menu
)
goto:eof
rem 防止bat文件执行完后黑窗口自动退出
:loop
timeout /t 1 >nul
goto loop