bat批处理在java启动jar的时候配置外部yml,并替换设置yml中数据库信息,检测IP是否正确,80端口是否被使用

14 篇文章 1 订阅
2 篇文章 0 订阅

这没啥好说的,直接贴脚本吧

@echo off
title 启动系统
setlocal enabledelayedexpansion
echo 可选数据库有:
echo.
echo 1.oracle数据库
echo.
echo 2.mysql数据库
echo.
:selectDB
set database=
set /p database=  请选择您的数据库[1/2]:
echo.
if /i %database%=1 (
    set dbtype=oracle
)else if /i %database%=2 (
    set dbtype=mysql
)else (
    echo 请输入数字1或数字2选择数据库类型!
    goto :selectDB
)
find /i /c "${ip}" ./application-%dbtype%Prod.yml >nul 2>nul|| goto :startsys
set file=./application-%dbtype%Prod.yml
set "file=%file:"=%"
for %%i in ("%file%") do set file=%%~fi
:start
set ipR=${ip}
:ipinput
set ip=
set /p ip=  请输入数据库IP:
echo;"%ip%"|>nul findstr "^\"[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\"$"|| (
    echo 数据库IP格式错误,请重新输入!
    goto :ipinput
)
for %%i in (%ip:.= %) do (
    if %%i gtr 255 (
        echo 数据库IP格式错误,请重新输入!
        goto :ipinput
    ) else if %%i lss 0 (
        echo 数据库IP格式错误,请重新输入!
        goto :ipinput
    )
)
echo 正在尝试数据库IP连通性,请稍等......
echo.
ping -n 1 %ip%| find "TTL">nul&&(echo 数据库IP连通性性正常!)|| (
    set inip=
    set /p inip=  数据库IP无法ping通,是否重新输入?[Y/N]:
    echo.
    if /i "!inip!"=="Y" (
    goto :ipinput
    )
)
echo.
set portR=${port}
:portinput
set port=
set /p port=  请输入数据库端口:
if "%port%"=="" (
    echo 数据库端口不能为空,请重新输入!
    goto :portinput
)
set /a s=%port%*1
if not %port%==%s% (
    echo 数据库端口只能是数字,请重新输入!
    goto :portinput
)
echo.
set sidR=${sid}
:sidinput
set sid=
set /p sid=  请输入数据库实例名:
if "%sid%"=="" (
    echo 数据库实例名不能为空,请重新输入!
    goto :sidinput
)
echo.
set usernameR=${username}
:usernameinput
set username=
set /p username=  请输入数据库用户名:
if "%username%"=="" (
    echo 数据库用户名不能为空,请重新输入!
    goto :usernameinput
)
echo.
set passwordR=${password}
:passwordinput
set password=
set /p password=  请输入数据库密码:
if "%password%"=="" (
    echo 数据库密码不能为空,请重新输入!
    goto :passwordinput
)
echo.
echo 您的数据库连接信息为 %ip%:%port%:%sid%
echo 您的数据库用户名为 %username%,密码为:%password%
echo.
set datainfo=
set /p datainfo=  请确认输入是否正确[Y/N]:
echo.
if /i "%datainfo%"=="Y" (
    for /f "delims=" %%i in ('type "%file%"') do (
        set str=%%i
        set "str=!str:%ipR%=%ip%!"
        set "str=!str:%portR%=%port%!"
        set "str=!str:%sidR%=%sid%!"
        set "str=!str:%usernameR%=%username%!"
        set "str=!str:%passwordR%=%password%!"
        echo !str!>>"file"_tmp.yml
    )
    goto :end
) else (
    goto :start
)
:end
move "%file%"_tmp.yml "%file%"
echo.
:startsys
set pid=0
for /f "token=5" %%a in ('netstat -aon ^| findstr ":80" ^| findstr "LISTENING"') do (
    set pid=%%a
)
if "%pid%" neq "0" (
    setlocal enabledelayedexpansion
    set iskill=
    set /p iskill=  端口号80已被占用,是否杀掉进程?如果不杀掉无法启动系统[Y/N]:
    echo.
    if /i "!iskill!"=="Y" (
        taskkill /f /pid %pid%
        echo.
    ) else (
        echo 您选择不杀掉端口【80】的进程【%pid%】,系统无法启动
        goto :over
    )
)
echo 如果是使用绿色版jdk,当前目录下有jre运行环境,则可执行命令 start cmd /k "title xxx系统 && jre\bin\java.exe -jar xxx.jar  --spring.profiles.active=%dbtype%Prod --Dspring.config.location=application-%dbtype%Prod.yml"
start cmd /k "java -jar xxx.jar --spring.profiles.active=%dbtype%Prod --Dspring.config.location=application-%dbtype%Prod.yml
:over

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值