Windows批量启动tomcat

使用步骤:

  1. 新建文本文档
  2. 将以下代码复制到里边
  3. 将名称改为start.bat(名无所谓,后缀是bat就行)
  4. 在文件同路径下,创建一个conf文件(没有后缀)
  5. 在conf文件中,写入配置信息
  6. 启动后选择要启动的项目
  7. 选择要启动的tomcat(多个tomcat使用空格分割)
    配置文件示例:
~项目1
^tomcat8080 8080 D:\Program`Files\apache-tomcat-8080
^tomcat8081 8081 D:\Program`Files\apache-tomcat-8081
^tomcat8082 8082 D:\Program`Files\apache-tomcat-8082
~项目2
^tomcat8090 8090 D:\Program`Files\apache-tomcat-8090
^tomcat8091 8091 D:\Program`Files\apache-tomcat-8091

配置文件规则:
项目使用 ~(shift+1前边那个)开头
tomcat使用 ^(shift+6)开头
空格使用 `(英文状态下,1前边那个)替换
第一个参数为tomcat标识 第二个参数为端口号 第三个参数为tomcat所在路径
每个配置项占一行

@ECHO off
CHCP 65001>NUL
SETLOCAL enabledelayedexpansion
REM 文件
SET "file=conf"
rem 项目数量(保存项目数量)
SET /a count=0
REM 读取项目名称和子系统
FOR /f "delims=" %%a IN ('TYPE "%file%"') DO (
  SET "line=%%a"
  SET "firstChar=!line:~0,1!"
  SET "line=!line:~1!"
  IF /i "!firstChar!"=="~" (
	SET /a count+=1
    SET "project[!count!].name=!line!"
	SET /a project[!count!].tomcatCount=0
	SET /a tomcatCount=0
  ) ELSE (
    SET /a tomcatCount+=1
    SET /a project[!count!].tomcatCount+=1
	FOR /f "tokens=1,2,*" %%x IN ("!line!") DO (
      SET "project[!count!].tomcat[!tomcatCount!].name=%%x"
      SET "project[!count!].tomcat[!tomcatCount!].host=%%y"
      SET "project[!count!].tomcat[!tomcatCount!].path=%%z"
    )
  )
)

:selectProject
ECHO 0. 所有项目
FOR /l %%i IN (1, 1, !count!) DO (
  ECHO %%i. !project[%%i].name!
)
SET /p "projNumber=请输入项目序号:"
IF "!projNumber!" gtr "!count!" (
  ECHO 输入错误,请重新选择!
  GOTO selectProject
) ELSE IF "!projNumber!" leq "0" (
  CALL :forTomcat 1 !count! 1 0
) ELSE (
  CALL :selecedTomcat !projNumber!
)

ENDLOCAL
GOTO :eof


:selecedTomcat
SET "index=%~1"
SET tomcatCount=
ECHO 0. 所有项目
FOR /l %%i IN (!index!, 1, !index!) DO (
  SET "param1=!project[%%i].name!"
  SET "tomcatCount=!project[%%i].tomcatCount!"
  FOR /l %%j IN (1, 1, !tomcatCount!) DO (
    SET "tomcatName=!project[%%i].tomcat[%%j].name!"
    ECHO %%j. !tomcatName!
  )
)
SET /p "tomcatNumber=请输入Tomcat序号(多个序号使用空格分割):"
IF "!tomcatNumber!" gtr "!tomcatCount!" (
  ECHO 输入错误,请重新选择!
  GOTO selecedTomcat
) ELSE IF "!tomcatNumber!" leq "0" (
  CALL :forTomcat !index! !index! 1 0
) ELSE (
  FOR %%e IN (!tomcatNumber!) DO (
    CALL :forTomcat !index! !index! %%e %%e
  )
)
ENDLOCAL
GOTO :eof

:forTomcat
SETLOCAL enabledelayedexpansion
SET "startIndex=%1"
SET "endIndex=%2"
SET "startTomcatIndex=%3"
SET "endTomcatIndex=%4"
FOR /l %%i IN (!startIndex!, 1, !endIndex!) DO (
  SET "tomcatCount=!project[%%i].tomcatCount!"
  IF "!startTomcatIndex!" equ "0" (
    SET "startTomcatIndex=!tomcatCount!"
  )
  IF NOT "!endTomcatIndex!" equ "0" (
    SET "tomcatCount=!endTomcatIndex!"
  )
  FOR /l %%j IN (!startTomcatIndex!, 1, !tomcatCount!) DO (
    SET "param2=!project[%%i].tomcat[%%j].name!"
    SET "param3=!project[%%i].tomcat[%%j].host!" 
    SET "param4=!project[%%i].tomcat[%%j].path!"
    CALL :startTomcat !param1! !param2! !param3! !param4!
  )
)
ENDLOCAL
GOTO :eof

:startTomcat
SETLOCAL enabledelayedexpansion
SET "projectName=%1"
SET "TITLE=%2"
SET "host=%3"
SET "CATALINA_HOME=%4"
SET "TITLE=!projectName!-!TITLE!"
SET "CATALINA_HOME=!CATALINA_HOME:`= !"

SET "CMD_LINE_ARGS="

CD !CATALINA_HOME!\bin
SET "CURRENT_DIR=%CD%"

IF NOT "%CATALINA_HOME%" == "" GOTO gotHome

SET "CATALINA_HOME=%CURRENT_DIR%"

IF EXIST "%CATALINA_HOME%\bin\catalina.bat" GOTO okHome
CD ..
SET "CATALINA_HOME=%CD%"
CD "%CURRENT_DIR%"

:gotHome
IF EXIST "%CATALINA_HOME%\bin\catalina.bat" GOTO okHome
GOTO end
:okHome

SET "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
IF EXIST "%EXECUTABLE%" GOTO okExec
GOTO end
:okExec
SET CMD_LINE_ARGS=
:setArgs

IF ""%1""=="""" GOTO doneSetArgs
SET CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
SHIFT
GOTO setArgs
:doneSetArgs
FOR /f "tokens=1-5" %%i IN ('netstat -ano^|findstr ":!host!"') DO ( 
 IF NOT "%%m" == "" (
    CALL "%EXECUTABLE%" stop %CMD_LINE_ARGS%
	REM 使用以下方式,可直接强行关闭
	REM TASKKILL /PID %%m /F
 )
)
PING 127.0.0.1 -n 1 -w 300 > NUL
CALL "%EXECUTABLE%" start %CMD_LINE_ARGS%
:end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值