现在的位置: 首页 > 综合 > 正文

tomcat中startup.bat文件内容详解

2013年03月05日 ⁄ 综合 ⁄ 共 1797字 ⁄ 字号 评论关闭

转载于:http://hi.baidu.com/xiaohuiq8/blog/item/a988f5fbd8f12413a9d31122.html

 

 1. @echo off
表示位于该命令之后的命令执行的时候不要显示出命令自身。同时为了让echo off这个命令本身也不要显示,在前面加上了@符号。
2. if "%OS%"=="Windows_NT" setlocal
这是个if语句。在命令行中执行help if就可以打印出if语句的使用帮助。
这里这条语句的作用是检查OS环境变量的值是否是Windows_NT,如果条件成立,则执行setlocal。命令行下执行help setlocal,我们会发现其具体介绍:这是开始批处理文件中环境改动的本地化操作。在执行SETLOCAL之后所做的环境改动只限于批处理文件。要还原原先的设置,必须执行ENDLOCAL。达到批处理文件结尾时,对于该批处理文件的每个尚未执行的SETLOCAL命令,都会有一个隐含的ENDLOCAL被执行。
3. rem Guess CATALINA_HOME if not defined
rem是批处理文件的注释语句,用于作解释或暂时屏蔽掉某条语句。
4. if not "%CATALINE_HOME%"=="" goto gotHome
这条语句是检测CATALINE_HOME的值,如果不为空,就跳转到gotHome标记出执行。
5. set CATALINA_HOME=.
6. if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
7. set CATALINA_HOME=..
先设置CATALINA_HOME为当前目录,如果找不到catalina.bat,再设置为上级目录。
8. :gotHome
9. if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
判断指定的文件是否存在,存在就跳转到okHome
10. echo The CATALINA_HOME environment variable is not defined correctly
11. goto end
12. :okHome
13. set EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat
14. set CMD_LINE_ARGS=
清空CMD_LINE_ARGS的值
15. :setArgs
设置参数
补充:
文件清单:test.bat
echo %0 %1 %2
这个批处理文件只有一条语句,如果我们在命令行下这样执行:test.bat aaa bbb ccc
那么结果就会打印出test.bat aaa bbb
说明:%0 %1 %2都表示变量
%0表示这个批处理文件的文件名,%1表示传递给该批处理文件的第一个参数,%2表示传递给该批处理文件的第二个参数,一直可以用这个方法传递9个参数,即使用到9%,但是如果参数再多了,应该如何处理呢?
这时候shift命令就派上用场了~
现在我们来更改test.bat,内容如下:
shift
echo %0 %1 %2
做了这些更改之后,同样执行上面的命令:test.bat aaa bbb ccc
打印的结果就是aaa bbb ccc
shift这个命令的作用就是把传递的参数依次前移,这样%0就代表了aaa,%1代表bbb,%2代表ccc。知道了这些知识后接着往下看:
16. if ""%1""=="""" goto doneSetArgs
检查%1是否为空,如果为空就表示没有参数了,设置参数结束,转至doneSetArgs;如果不为空就把%1指向的参数追加到CMD_LINE_ARGS这个环境变量中。就是17行所表示的意思:
17. set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
18. shift
shift指令是移位参数,使%1指向了下个参数
19. goto setArgs
跳转到setArgs,检查%1是否为空,如果不空,继续追加参数。。。
20. :doneSetArgs
21. call "%EXECUTABLE%" start %CMD_LINE_ARGS%
启动EXECUTABLE环境变量所指向的程序,即catalina.bat,其后跟的第一个参数是start,所以要启动Tomcat内核,如果其后跟的第一个参数是stop,则停掉Tomcat,当然,另外还要把CMD_LINE_ARGS作为参数传递进去。
22. end

抱歉!评论已关闭.