码迷,mamicode.com
首页 > 其他好文 > 详细

tomcat启动批处理——startup.bat

时间:2017-06-02 21:10:08      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:oca   mod   数组   out   exe   tom   cal命令   收集   设置   



从文件命名上看就知道这是一个启动批处理。这个批处理的主要功能就是为了找到还有一个批处理catalina.bat,而且运行catalina.bat。
一開始就用if "%OS%" == "Windows_NT" setlocal 推断系统是否为Windows_NT。假设是的话则使用setlocal命令,此命令表示之后全部对环境变量的改变仅仅限于该批处理文件。要还原原先的设置能够运行endlocal。如未显式运行,则会在批处理的最后自己主动隐性运行endlocal命令。


接下来这段脚本设置CATALINA_HOME环境变量,并终于确定catalina.bat的路径。如图3-2-1-1清晰表达了 CATALINA_HOME变量值确定的逻辑。

①假设系统变量设置了CATALINA_HOME。则直接使用系统变量设置的值作为tomcat安装文件夹。

②假如没设置系统变量CATALINA_HOME,则以批处理或命令行当前文件夹作为CATALINA_HOME。此时假设%CATALINA_HOME%\bin\catalina.bat存在。则批处理或命令行当前文件夹作为CATALINA_HOME。③假如%CATALINA_HOME%\bin\catalina.bat不存在,则把当前文件夹的上一级文件夹作为CATALINA_HOME,此时再推断%CATALINA_HOME%\bin\catalina.bat是否存在,存在则当前文件夹的上一级文件夹就是CATALINA_HOME。

否则提示找不到CATALINA_HOME环境变量。
对于②跟③的情况可能比較easy产生疑问。②主要针对用命令行运行,命令行的当前文件夹是tomcat安装文件夹,运行bin\startup.bat。③的情况可能是命令行运行,也可能是双击批处理运行。命令行运行是把当前文件夹切到tomcat安装文件夹\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
********************************************************************************************

技术分享
 
图3-2-1-1
确定了CATALINA_HOME的值即已经确定了catalina.bat。

接下去是接受參数,在启动时常常会附带一些命令參数。startup.bat通过下面程序完毕对參数的收集。


********************************************************************************************
set CMD_LINE_ARGS=
:setArgs
if ""%1""=="""" goto doneSetArgs     
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1   //将參数组成一行,接在后面
shift
goto setArgs
:doneSetArgs
********************************************************************************************
首先把CMD_LINE_ARGS设置环境变量为空。首先推断第一个參数是否为空,为空则表示没有參数。直接跳到doneSetArgs位置,假设第一个參数不为空。则把第一个參数赋给CMD_LINE_ARGS,shift命令的作用是把參数前移一位。这时%1代表的就是原来第二个參数,shift后又跳到setArgs位置。此时推断的是第二个參数,假设不为空则把參数追加到CMD_LINE_ARGS。

以此类推。把參数一个个前移,直到%1为空,则表示全部參数都已经收集完。

call "%EXECUTABLE%" start %CMD_LINE_ARGS%,这条命令是把刚刚收集好的全部參数CMD_LINE_ARGS作为參数,调用运行catalina.bat批处理。


点击订购作者《Tomcat内核设计剖析》




tomcat启动批处理——startup.bat

标签:oca   mod   数组   out   exe   tom   cal命令   收集   设置   

原文地址:http://www.cnblogs.com/yfceshi/p/6935041.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!