1、 Apache Tomcat的下载和安装

从Apache官网https://tomcat.apache.org/可以下载各种版本的tomcat软件,下载的文件格式可以是zip/tar.gz/exe形式的。

如下图所示,在64位windows中使用tomcat,我们可以下载"64-bit Windows.zip",直接解压缩就可以使用;或者下载"32-bit/64-bit Windows Service Installer",通过exe安装tomcat后使用。

2、 tomcat的bin目录

无论哪种形式获得的tomcat服务器软件,在tomcat的主目录下都有一个bin目录,该bin目录中存在tomcat服务器启动、停止和运行所必须的批处理/SHELL脚本、exe可执行程序和一些jar包。

本文只介绍其中的startup.bat脚本程序,该脚本程序通过调用其他脚本用于启动tomcat服务器。

3、 startup.bat脚本的主要功能

该脚本功能很简单,主要实现两方面的功能:找到catalina.bat脚本,该脚本用于实际启动tomcat服务器;组织参数传递给catalina.bat,调用call该脚本执行。

4、 startup.bat脚本详细执行过程

下面文字删掉了startup.bat脚本文件的英文注释,只保留了脚本中可以实际执行的语句,分析了每一条语句的功能。

另,分析的文字放在了rem注释中。rem注释中多数为汉字,操作系统解释该脚本时有时会和后续行的指令发生勾连,造成脚本执行报错。故,每个rem注释语句的最后添加了一个英文形式的点号,这样脚本能正常执行。

另,下面的脚本在tomcat9.0的startup.bat基础上做了些许修改,确保该脚本不仅仅可以完成tomcat的启动操作,其他如stop操作等都可以正常执行。

------ startup.bat ----

@echo off

rem @echo off从本条命令开始关闭回显,如果是echo off则是从下条命令开始关闭回显.

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

rem 打开回显,则执行的命令和输出在cmd窗口都能看到.

rem bat脚本一般第一条指令就是这条.

setlocal

rem 设置局部于setlocal和endlocal之间的变量,没有endlocal就直接到bat文件结尾处.

set "CURRENT_DIR=%cd%"

rem %cd%:脚本执行的当前目录,这里的当前目录有可能和脚本实际所在目录不一致.

rem %~dp0%:脚本文件所在目录,注意,目录的路径为全路径,并且带结尾的,前者不带.

rem 上面set语句将脚本执行的当前目录名赋给局部变量CURRENT_DIR.

rem 如果CATALINA_HOME的内容不是空,即变量已经设置好了,则直接跳转,不用再赋值了.

if not "%CATALINA_HOME%" == "" goto gotHome

rem 否则取出变量CURRENT_DIR的值赋给CATALINA_HOME这个环境变量.

set "CATALINA_HOME=%CURRENT_DIR%"

rem 若CATALINA_HOME下面的bin目录下存在catalina.bat文件,则直接跳转,不用再赋值.

if exist "%CATALINA_HOME%bincatalina.bat" goto okHome

rem 否则向前退一级目录后将目录名赋给CATALINA_HOME,并转到该目录下.

cd ..

set "CATALINA_HOME=%cd%"

cd "%CURRENT_DIR%"

:gotHome

rem 如果找到了catalina.bat,则转到后面执行该批处理文件.

if exist "%CATALINA_HOME%bincatalina.bat" goto okHome

rem 否则找不到catalina.bat文件,在cmd窗口回显下面的提示,跳转到end,结束脚本执行.

echo The CATALINA_HOME environment variable is not defined correctly

echo This environment variable is needed to run this program

goto end

:okHome

rem 将catalina.bat的全路径名赋给变量EXECUTABLE

set "EXECUTABLE=%CATALINA_HOME%bincatalina.bat"

rem 如果EXECUTABLE中的全路径名存在,则转到执行程序的位置执行启动程序.

if exist "%EXECUTABLE%" goto okExec

rem 否则如果全路径名不存在,提示不能执行启动程序,跳转到最后end结束脚本执行.

echo Cannot find "%EXECUTABLE%"

echo This file is needed to run this program

goto end

:okExec

rem 设置startup.bat的命令行参数,初始化参数为空.

set CMD_LINE_ARGS=

:setArgs

rem 将startup.bat文件的命令行参数存储在CM_LINE_ARGS中.

rem 如果第一个位置的命令行参数为空,则结束拼装命令行参数.

if ""%1""=="""" goto doneSetArgs

rem 将第一个参数并入命令行参数变量中.

set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

rem 命令行参数中参数左移一位,即将第二个参数移到第一个参数的位置.

rem 第三个参数移到第二个参数的位置等等.

shift

rem 跳转到:setArgs处,完成当前参数拼装,当参数为空时跳出setArgs循环.

goto setArgs

:doneSetArgs

rem 执行该startup.bat文件可以有如下的一些参数.

rem C>startup.bat

rem C>startup.bat start

rem C>startup.bat stop

rem C>startup.bat debug

rem C>startup.bat start -security

rem C>startup.bat run

rem C>startup.bat run -security

rem 只运行了startup.bat文件,没有指定命令行参数,默认就当成启动操作.

rem 拼装start参数给批处理程序.

if "%CMD_LINE_ARGS%" == "" set CMD_LINE_ARGS=start

echo 调用catalina.bat的命令:%EXECUTABLE% %CMD_LINE_ARGS%

rem 调用catalina.bat批处理脚本文件

call "%EXECUTABLE%" %CMD_LINE_ARGS%

:end

bat 脚本清空窗口内容_tomcat9.0启动脚本startup.bat的分析相关推荐

  1. tomcat勾连mysql_tomcat9.0启动脚本startup.bat的分析

    1. Apache Tomcat的下载和安装 从Apache官网https://tomcat.apache.org/可以下载各种版本的tomcat软件,下载的文件格式可以是zip/tar.gz/exe ...

  2. Qtopia-2.2.0启动脚本

    在ARM上启动Qtopia-2.2.0: 使用USB鼠标的脚本: #!/bin/sh HOME=/root QTDIR=/opt/Qtopia QPEDIR=/opt/Qtopia QWS_MOUSE ...

  3. tomcat.exe java home,tomcat.exe启动和startup.bat启动的不同

    一.tomcat7.exe与startup.bat的区别: 1.这两个都可以启动tomcat,但tomcat7.exe必须安装了服务才能启动,而startup.bat不需要 2.另外一个区别是它们启动 ...

  4. Max脚本做成工具栏按钮,便捷启动脚本

    把脚本复制到安装目录下的Scripts文件夹内 在max上按F11呼唤出脚本编辑器 复制下方代码,按照脚本名称修改代码插件名称.名称不支持特殊字符. filein "$Scripts\插件名 ...

  5. oracle启动shell脚本编写,Linux下的Oracle启动脚本及其开机自启动

    说明:以下操作环境在CentOS 6.4 + Oracle 11gR2(Oracle安装在ORACLE_BASE=/opt/oracle中,其ORACLE_HOME=/opt/oracle/11g) ...

  6. shell脚本发邮件内容html,[转]Shell脚本中发送html邮件的方法

    作为运维人员,免不了要编写一些监控脚本,并将监控结果及时的发送出来.那么通过邮件发送是比较常用的一种通知方式了.通常的,如果需要发送的内容是简单的文本文件,那么使用/bin/mailx就可以了,但是如 ...

  7. linux下新建一个脚本文件,linux下新建并启动脚本文件

    1.书写一个linux脚本文件: 2. 修改3个参数:Name,服务名称: Path:路径: Assembly:具体应用的程序: 3.进入目录/etc/init.d# (Linux启动项目): 4.将 ...

  8. 用php脚本获取服务内容,如何使用PHP脚本仅获取数据库的内容

    我试图从 MySql数据库中获取三列.我能够获取内容,但这不是我需要的.我只需要将内容作为字符串数组,以便我可以使用它们来填充我的java代码中的列表视图. 我脚本的当前响应是: { ["U ...

  9. Frps一键安装脚本,带Frpc Windows便捷启动脚本

    说明:Frp估计很多人都用过,一个高性能的内网穿透工具,支持tcp.udp.http.https协议,安装和使用教程可以直接查看官方中文文档→传送门,写的超详细.这里博主分享个某大佬写的Frps一键脚 ...

最新文章

  1. SpringCloud 2020版本教程1:使用nacos作为注册中心和配置中心
  2. 11月4日下午:植物保护高端论坛 (白洋、韦中)
  3. 没错,那帮实习生什么都做不好
  4. Android-源码剖析CountDownTimer(倒计时类)
  5. LoRa和ZigBee谁更适合智能家居?
  6. 如何将实时计算 Flink 与自身环境打通
  7. 02.友盟项目--原始日志数据生成
  8. Python组合列表中多个整数得到最小整数(一个算法的巧妙实现)
  9. ubuntu安装过程中遇到的一些问题及解决办法。
  10. Emacs取消键值绑定
  11. hdu 1754 线段树 水题 单点更新 区间查询
  12. c语言程序输出数字图形,C语言数组应用之图形数字的输出
  13. python批量写入经纬度
  14. 什么是负边沿触发_负边沿jk触发器功能测试
  15. Groovy 快速入门
  16. 镜像构建工具SOURCE TO IMAGE(S2I)实践
  17. 本地RTMP流媒体服务器搭建拉流简易版
  18. docker入门及实际应用
  19. 读完研继续读博还是先工作几年再读博好一些?
  20. 劝退员工,你问过劳动合同法了吗?

热门文章

  1. OC中description、 SEL、类本质、self和super用法
  2. ShardedJedisPool 中可用连接数的小bug
  3. 两千内给力的大屏手机(二)
  4. [区块链与密码学][王小云院士][部分PPT][20200507]
  5. python第三方库全部_自动更新Python所有第三方库
  6. normalize函数_提取棋盘格角点函数解析
  7. java的jsp要下载吗_jsp、java下载附件
  8. python全套学习方法_python学习方法总结(内附python全套学习资料)
  9. 中国电子计算机大学竞赛安徽分赛,我院学子喜获第十二届全国大学生数学竞赛安徽赛区15项一等奖...
  10. html a 点击防止刷新,a标签点击跳转页面不刷新的问题