//删除冗余的注释语句(即rem 开头的语句),其中rem表示注释,echo表示输出,startup文件内容如下:
@echo off
if "%OS%" == "Windows_NT" setlocal //判断当前系统是否是window系统
rem Guess CATALINA_HOME if not defined
set "CURRENT_DIR=%cd%" //设置当前目录
if not "%CATALINA_HOME%" == "" goto gotHome //如果设置了CATALINA_HOME环境变量 ,就跳转到gotHome处执行
set "CATALINA_HOME=%CURRENT_DIR%" //如果没有设置CATALINA_HOME,就设置CATALINA_HOME的值为当前目录
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome //判断catalina.bat是否存在,存在就跳转到okHome处执行
cd .. //返回catalina.bat所在上级目录即tomcat的bin目录,对应上一个判断,catalina.bat不存在时执行此处
set "CATALINA_HOME=%cd%" //设置CATALINA_HOME为tomcat的安装目录
cd "%CURRENT_DIR%" //进入当前目录
:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome //判断catalina.bat是否存在,存在就跳转到okHome处执行
echo The CATALINA_HOME environment variable is not defined correctly //对于上面的判断,不存在时提示错误信息
echo This environment variable is needed to run this program
goto end //跳转到end出执行,因为end后面没有代码,所以程序就退出,也就是我们看到一闪而过的原因所在了。
:okHome
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat" //设置EXECUTABLE 为 catalina.bat
rem Check that target executable exists
if exist "%EXECUTABLE%" goto okExec // 判断EXECUTABLE(这里指catalina.bat文件)是否存在,存在就跳转到okExec处执行
echo Cannot find "%EXECUTABLE%" //对于上面的判断,不存在时 提示错误信息EXECUTABLE(这里指catalina.bat文件)找不到
echo This file is needed to run this program //EXECUTABLE(这里指catalina.bat文件) 是程序运行必要条件
goto end //跳转到end出执行
:okExec
rem Get remaining unshifted command line arguments and save them in the
set CMD_LINE_ARGS= //设置参数
:setArgs
if ""%1""=="""" goto doneSetArgs //关于%1 与shift 命令,建议大家详细百度一下吧,这里不做解释了,只要知道%1表示参数就可以了
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 //设置参数
shift
goto setArgs
:doneSetArgs
call "%EXECUTABLE%" start %CMD_LINE_ARGS% //call是调用的意思,就是调用EXECUTABLE(这里指catalina.bat文件) start 参数
:end // 程序结束
/*
* 看到这里,相信大家已经知道这个文件是干什么用的了:就是找到 catalina.bat文件并且运行 catalina.bat。
*/