tomcat 7(一) startup.bat详解

来源:互联网 发布:淘宝零食大礼包划算吗 编辑:程序博客网 时间:2024/06/13 13:34

在window系统系,当我们运行startup.bat文件时,我们就可以启动tomcat。

我们来看一下该文件到究竟干了什么。

首先介绍一下bat文件

1.bat文件
bat文件是dos下的批处理文件,在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。
2.startup.bat文件下涉及到的命令

2.1 echo 命令
打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。在cmd窗口可以看到bat内执行的命令和输出结果。

2.2 echo off
在依次执行批处理文件中的每条命令时,关闭回显。在cmd窗口看不到bat内执行的命令,但可以看到输出结果。

没有关闭会显示时:
test1.bat

echo %JAVA_HOME%

这里写图片描述
能够看到bat文件中执行的命令

关闭回显:
test2.bat

echo offecho %JAVA_HOME%

这里写图片描述

关闭回显,bat文件中执行的命令看不到了,但是echo off 关闭回显这条命令可以看到。

2.3@
表示不显示@后面的命令
test3.bat

@echo offecho %JAVA_HOME%

这里写图片描述
此时@后面的内容没有显示

2.4rem
注释命令,后面的内容会被注释掉

2.5goto
跳转到指定的标签,找到标签后,程序将处理从下一行开始的命令。

2.6pause
运行pause命令将显示 Press any key to continue… 或者是请按任意键继续…
test4.bat

@echo offpause

这里写图片描述

*2.7call*
从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。

建立两个bat文件
test5.bat

@echo offecho test5.bat startcall test6.batecho test5.bat end

test6.bat

@echo offecho test6.bat

这里写图片描述

2.8 start

打开一个新的窗口
进入cmd窗口输入 start /?
这里写图片描述
test7.bat

@echo offstart D:/AAA

这段代码会打开D盘下的AAA目录
这里写图片描述

要想在新的窗口下进入cmd目录
test8.bat

@echo offstart cd  D:/AAA

这里写图片描述

2.9 if
2.9.1 if “参数” == “字符串”

判断字符串是否想等

2.9.2 if exist 文件名

判断在文件是否存在

2.10 setlocal,endlocal 命令
setlocal和endlocal是让中间的程序对于系统变量的改变只在程序内起作用,不会影响整个系统。设置系统变量用set,查看环境标量用 echo %环境变量名称%

@echo offsetlocalecho %JAVA_HOME%set JAVA_HOME="java_home"echo %JAVA_HOME%endlocalecho %JAVA_HOME%

这里写图片描述

2.11参数的传递
在cmd下执行bat文件,可以向bat文件传递参数。在bat内部用%1代表第一个参数,%2代表第二个参数,以此类推。传递多个参数是用空格分开

@echo offecho %1 %2

这里写图片描述

2.12 shift

shift /n

从第n+1个数开始(包括第n个数)所有的数字向前位移一个单位(第n+1个书覆盖第那个数,第n+2个书覆盖第n+1个数,一次类推),如果n=1或者n=2则不发生位移

test11.bat

@echo offecho %1 %2 %3shift /2echo %1 %2

这里写图片描述

下面解释一下 startup.bat 文件

@echo off
- - - - echo off 从本条命令开始开始,关闭回显。在前面加个“@” 将本条命令本身也关闭回显
rem Licensed to the Apache Software Foundation (ASF) under one or more
rem contributor license agreements. See the NOTICE file distributed with
rem this work for additional information regarding copyright ownership.
rem The ASF licenses this file to You under the Apache License, Version 2.0
rem (the “License”); you may not use this file except in compliance with
rem the License. You may obtain a copy of the License at
rem
rem http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an “AS IS” BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.

rem —————————————————————————
rem Start script for the CATALINA Server
rem —————————————————————————

setlocal
- - - -将后面的环境变量设置为临时环境变量(直到endlocal 命令的出现)

rem Guess CATALINA_HOME if not defined
set “CURRENT_DIR=%cd%”
- - - - 将 CURRENT_DIR 环境变量设置为当前路径
if not “%CATALINA_HOME%” == “” goto gotHome
- - - - 判断是否存在 CATALINA_HOME 环境变量。如果存在该环境变量跳转到gotHome标签
set “CATALINA_HOME=%CURRENT_DIR%”
- - - - 如果不存在CATALINA_HOME环境变量将CATALINA_HOME 设置为CURRENT_DIR所指向的路径(即当前路径)
if exist “%CATALINA_HOME%\bin\catalina.bat” goto okHome
- - - - 判断是否存在%CATALINA_HOME%\bin\catalina.bat文件,如果存在跳转到okHome标签
cd ..
- - - -这里是假设你开始已经进入到了tomcat的bin目录,所以就退到上一级目录(变为了当前目录)
set “CATALINA_HOME=%cd%”
- - - - 将CATALINA_HOME 设置为当前路径
cd “%CURRENT_DIR%”
- - - - 进入上面设置的 CURRENT_DIR 路径(这里又变成了当前路径)
:gotHome
if exist “%CATALINA_HOME%\bin\catalina.bat” goto okHome
- - - -判断是否存在%CATALINA_HOME%\bin\catalina.bat该文件

echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
如果不存在打印上面的内容,并且跳转到end标签,结束程序
:okHome

set “EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat”
- - - - 将 EXECUTABLE环境变量设置为tomcat服务器bin目录下的catalina.bat路径
rem Check that target executable exists
if exist “%EXECUTABLE%” goto okExec
- - - - 判断是否存在catalina.bat文件,如果存在跳转到okExec标签。
echo Cannot find “%EXECUTABLE%”
echo This file is needed to run this program
goto end
- - - - 如果没有找到catalina.bat文件打印上面内容,并跳转到end标签。

:okExec

rem Get remaining unshifted command line arguments and save them in the
set CMD_LINE_ARGS=
将 CMD_LINE_ARGS 设置为空(CMD_LINE_ARGS为设置参数的一个环境变量)。
:setArgs
if “”%1”“==”“”” goto doneSetArgs
检查%1是否为空,如果为空就表示没有参数了,设置参数结束,转至doneSetArgs标签
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
- - - - 如果不为空就把%1指向的参数追加到CMD_LINE_ARGS这个环境变量中。
shift
- - - - 删除第一个参数,后面的参数左移一个位置。
goto setArgs
- - - -跳转到 setArgs 标签。
:doneSetArgs

call “%EXECUTABLE%” start %CMD_LINE_ARGS%
- - - 通过call命令调用catalina.bat启动脚本,并传递参数
:end

添加一张startup.bat文件的流程图
这里写图片描述

从上图可以看出,执行startup.bat相当于执行catalina.bat start

在tomcat的bin目录下还存在着configtest.bat文件、shutdown.bat文件、version.bat文件,他们的实质都是调用的catalina.bat文件,只不过是他们传递的参数不相同罢了。

运行configtest.bat文件,相当于执行catalina.bat configtest;
运行configtest.bat文件,相当于执行catalina.bat stop;
运行version.bat文件,相当于执行catalina.bat version;

但是运行digest.bat文件时,他执行的文件是tool-wrapper.bat文件传递的参数是
-server org.apache.catalina.realm.RealmBase。

可以看出catalina.bat文件才是tomcat的关键!!
文章参考:http://m.blog.csdn.net/article/details?id=22208275

0 0
原创粉丝点击