bat 脚本清空窗口内容_tomcat9.0启动脚本startup.bat的分析
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的分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信用卡审核没通过还能再办吗 信用卡被拒多
- 下一篇: 什么是全面注册制?注册制对股市有什么影响