@echo off
以上語句做用是在命令提示符窗口隱藏下面的命令自己。
if "%OS%" == "Windows_NT" setlocal
以上語句做用是設置下面的命令的做用範圍僅限於這個批處理文件
rem ---------------------------------------------------------------------------
rem Start script for the CATALINA Server
rem
rem $Id: startup.bat 758256 2009-03-25 13:43:00Z mturk $
rem ---------------------------------------------------------------------------
rem Guess CATALINA_HOME if not defined
以上語句以rem開頭,所有是是註釋。
set CURRENT_DIR=%cd%
以上語句的含義:%cd%表明批處理文件所在目錄。這裏定義了一個變量CURRENT_DIR等於批處理文件所在目錄。
if not "%CATALINA_HOME%" == "" goto gotHome
以上語句含義是:若是沒有定義CATALINA_HOME的環境變量,就跳轉到gotHome處繼續執行,負責執行下一條語句。
set CATALINA_HOME=%CURRENT_DIR%
含義是設置CATALINA_HOME爲上面定義的當前目錄CURRENT_DIR。
if exist "%CATALINA_HOME%/bin/catalina.bat" goto okHome
含義是:若是存在CATALINA_HOME環境變量設置的目錄下的bin目錄下的catalina.bat文件,就跳轉到okHome處繼續執行。
cd ..
set CATALINA_HOME=%cd%
上面兩條語句的含義是:設置CATALINA_HOME爲當前目錄的上一級目錄。
cd %CURRENT_DIR%
返回批處理文件所在目錄。
:gotHome
定義gotHome斷點
if exist "%CATALINA_HOME%/bin/catalina.bat" goto okHome
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
無論是環境變量中設置的CATALINA_HOME目錄或者當前批處理文件所在目錄,只要存在/bin/catalina.bat,就跳轉到okHome。不然報錯後跳轉到end。
:okHome
定義okHome斷點
set EXECUTABLE=%CATALINA_HOME%/bin/catalina.bat
rem Check that target executable exists
if exist "%EXECUTABLE%" goto okExec
echo Cannot find %EXECUTABLE%
echo This file is needed to run this program
goto end
以上語句:若是%CATALINA_HOME%/bin/catalina.bat文件不存在,就報錯而且跳轉到end。
:okExec
定義okExec斷點
rem Get remaining unshifted command line arguments and save them in the
set CMD_LINE_ARGS=
清空環境變量CMD_LINE_ARGS
:setArgs
if ""%1""=="""" goto doneSetArgs
%1表明經過命令窗口執行這個批處理文件時傳遞給這個文件的第一個參數,%2,%3以此類推。%0表明批處理文件名。這裏的意思是判斷若是沒有參數,跳到doneSetArgs處執行。
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
在CMD_LINE_ARGS尾部追加當前參數。
Shift
參數+1
goto setArgs
執行循環知道沒有參數爲止。
:doneSetArgs
call "%EXECUTABLE%" start %CMD_LINE_ARGS%
執行catalina.bat命令並追加參數。
:end this