这没啥好说的,直接贴脚本吧
@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