@不显示它注释的命令
echo显示后边的字符串
echo off命令不显示bat文件中除echo off命令的其他命令
@echo off不显示所有命令
@startup.bat of Tomcat
**********************************************************
@echo off
if "%OS%" == "Windows_NT" setlocal
rem ---------------------------------------------------------------------------
rem Start script for the CATALINA Server
rem
rem $Id: startup.bat 908749 2010-02-10 23:26:42Z markt $
rem ---------------------------------------------------------------------------
rem Guess CATALINA_HOME if not defined
set "CURRENT_DIR=%cd%" //初始化CURRENT_DIR为当前目录
//如果CATALINA_HOME不为空,跳转
if not "%CATALINA_HOME%" == "" goto gotHome
//设置CATALINA_HOME为当前目录
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
//如果仍然无法找到catalina.bat,报错
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
//跳转到结束
goto end
: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
: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~%9个,%0表示当前bat文件的文件名,%1表示第一个参数,依次类推
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
//把%1指向的参数追加到CMD_LINE_ARGS
shift
//使%1指向下一个命令行参数
goto setArgs
:doneSetArgs
call "%EXECUTABLE%" start %CMD_LINE_ARGS%
//调用%EXECUTABLE%,start、%CMD_LINE_ARGS%作为参数
:end