Tomcat 8(五)startup.bat详解

来源:互联网 发布:天香捏脸数据导入 编辑:程序博客网 时间:2024/05/17 03:10

在Windows下,执行startup.bat,就可以启动Tomcat

下面我们来看看startup.bat究竟干了什么?

先简单介绍下bat文件

1. bat文件

批处理文件,在DOSWindows(任意版本)系统中,bat文件是可执行文件。bat文件由一系列命令构成

2. 执行bat文件

双击bat文件或在命令行下执行bat文件

3. startup.bat中涉及的bat语法

3.1 @、echo、echo off

@-关闭单行回显

打开回显:执行bat文件时,在cmd窗口可以看到bat内执行的命令和输出结果

关闭回显:执行bat文件时,在cmd窗口看不到bat内执行的命令,但可以看到输出结果

echo-显示echo后的字符

echo off-从下一条命令开始,关闭回显

@echo off-从本条命令开始,关闭回显(一般bat文件第一行都是这个)

3.2 rem

注释(::也可用做注释)

3.3 pause

暂停批处理的执行,并在屏幕上显示“Press any key to continue..."或"请按任意键继续...”的提示

3.4  call

调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)

3.5 获取系统变量

%+系统变量名+%,可以获得系统变量

创建Test1.bat

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. @echo off  
  2. echo %JAVA_HOME%  

执行结果:


通过%JAVA_HOME%可以获取系统变量JAVA_HOME

3.6 setlocalendlocal

setlocalendlocal是让中间的程序对于系统变量的改变只在程序内起作用,不会影响整个系统。设置系统变量用set

创建Test2.bat

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. @echo off  
  2. setlocal  
  3. echo %JAVA_HOME%  
  4. set JAVA_HOME=CSDN  
  5. echo %JAVA_HOME%  
  6. endlocal  
  7. echo %JAVA_HOME%  

执行结果:

 

首先执行setlocal,此时系统变量JAVA_HOME为”C:\Program Files\Java\jdk1.7.0_51”,然后通过set设置JAVA_HOME为”CSDN”,此时JAVA_HOME为”CSDN”,最后执行endlocal,此时JAVA_HOME恢复为”C:\Program Files\Java\jdk1.7.0_51”

3.7 传递参数

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

创建Test3.bat

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. @echo off  
  2. echo %1  

执行Test3.bat CSDN,执行结果:


3.8 if

if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令

3.8.1 if [not] "变量/参数" == "字符串待执行的命令

字符串是否相同。例:if "%1"=="a" echo “equal”

3.8.2 if [not] exist [路径\]文件名 待执行的命令

文件是否存在。例if exist c:\a.txt echo “exits”

3.9 goto

批处理文件运行到这里将跳到goto所指定的标签(标签用”:标准字符串”来定义,标签所在行不被执行)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组

创建Test4.bat

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. @echo off  
  2. set name="Tom"  
  3. if %name%=="Tom" goto Tom  
  4.    
  5. :Jack  
  6. echo "Jack"  
  7.    
  8. :Tom  
  9. echo "Tom"  
  10. goto end  
  11.    
  12. :Vip  
  13. echo "Vip"  
  14.    
  15. :end  

执行结果:


运行bat过程中,if条件成立,跳到(goto)Tom标签继续执行,然后跳到end标签,结束

将name改为”Tom1”

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. @echo off  
  2. set name="Tom1"  
  3. if %name%=="Tom" goto Tom  
  4.    
  5. :Jack  
  6. echo "Jack"  
  7.    
  8. :Tom  
  9. echo "Tom"  
  10. goto end  
  11.    
  12. :Vip  
  13. echo "Vip"  
  14.    
  15. :end  

执行结果:


运行bat过程中,if条件不成立,先进入Jack标签,然后进入Tom标签,然后跳到end标签,结束

3.10 shift

更改批处理文件中参数的位置

shift [/n]

为整数;[/n]为可选参数,当赋予n某个值时,就意味着从第n个参数开始移位;当n赋予的值为0,1或未赋值时,删除第一个参数,后面的参数左移一个位置

创建Test5.bat

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. @echo off  
  2. echo %1 %2  
  3. shift  
  4. echo %1  

执行Test5.bat 1 2(传递两个参数:12)执行结果:


shift之后将第一个参数(1)删除,原来的第二个参数(2)成为第一个参数

--------------------------------------------------------------------------------------------------------------------------

下面我们来看看startup.bat文件,以下是删除注释(rem)之后的startup.bat

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. @echo off  
  2.    
  3. if "%OS%" == "Windows_NT" setlocal  
  4.    
  5. set "CURRENT_DIR=%cd%"  
  6. if not "%CATALINA_HOME%" == "" goto gotHome  
  7. set "CATALINA_HOME=%CURRENT_DIR%"  
  8. if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome  
  9. cd ..  
  10. set "CATALINA_HOME=%cd%"  
  11. cd "%CURRENT_DIR%"  
  12.    
  13. :gotHome  
  14. if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome  
  15. echo The CATALINA_HOME environment variable is not defined correctly  
  16. echo This environment variable is needed to run this program  
  17. goto end  
  18.    
  19. :okHome  
  20. set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"  
  21. if exist "%EXECUTABLE%" goto okExec  
  22. echo Cannot find "%EXECUTABLE%"  
  23. echo This file is needed to run this program  
  24. goto end  
  25.    
  26. :okExec  
  27. set CMD_LINE_ARGS=  
  28.    
  29. :setArgs  
  30. if ""%1""=="""" goto doneSetArgs  
  31. set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1  
  32. shift  
  33. goto setArgs  
  34.    
  35. :doneSetArgs  
  36.    
  37. call "%EXECUTABLE%" start %CMD_LINE_ARGS%  
  38.    
  39. :end  

@echo off-从本条命令开始开始,关闭回显

if "%OS%" == "Windows_NT" setlocal-判断是否为Windows系统。是,则执行setlocal

startup.bat的流程图


双击startup.bat,是按上图最左边的路线执行的

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

与startup.bat类似的bat还有configtest.bat、digest.bat、shutdown.bat、version.bat。这5bat文件唯一的差别就是,在执行catalina.bat时所传递的参数不同

configtest.bat=catalina.bat configtest

digest.bat=catalina.bat -server org.apache.catalina.realm.RealmBase

shutdown.bat=catalina.bat stop

version.bat=catalina.bat version

看来catalina.bat才是核心!

0 0
原创粉丝点击