從之前的學習中知道,可以調用Bootstrap類將Toomcat作為一個獨立的應用程序來運行,在Windows平台上,可以調用startup.bat批處理文件來啟動Tomcat,或運行shutdown.bat批處理文件來關閉Tomcat,這兩個批處理文件位於%CATALINA_HOME%/bin目錄下,下面將會對批處理腳本進行介紹,如果你對DOS命令不太熟悉,那么你需要認真閱讀下面的,如何編寫批處理文件這個段落,
如何編寫批處理文件
下面將會對批處理文件進行介紹,這樣你才能理解用來啟動或者關閉Tomcat的批處理文件,會對 rem、if、 echo、goto、lable等命令進行介紹,當然,介紹的內容並不能涵蓋所欲偶的內容,
首先批處理文件的后綴名必須為 .bat,可以從Windows Explorer 中雙擊一個批處理文件,也可以在DOS控制台中鍵入批處理文件的名字來調用它,調用批處理文件后,文件中的每一行命令都會被解釋,下面將會對Tomcat的批處理文件命令進行介紹。
注意:DOS命令及環境變量是區分大小寫的,
rem命令:該命令用於注釋,解釋器不會執行以rem命令開始的行
pause:pause命令用於暫停正在執行的批處理文件,並提示用戶按某個鍵,然后程序會繼續執行。
echo:該命令用於在DOS控制台上顯示一段文件,例如,下面的命令將在控制台上輸出 Hello Word,然后暫停程序,之所以暫停程序是為了能夠使控制台將輸出的文本顯示出來:
echo Hello Word
pause
如果想要顯示環境變量的值,需要在環境變量值的前后添加%,例如,下面的命令將輸出 變量 myVar的值
echo %myVar%
如果想要輸出操作系統的名字,可以使用如下命令
echo %OS%
echo off(
#從下一行開始關閉回顯
)
使用 echo off 可以防止將批處理文件中的具體命令輸出,而只會輸出執行結果,但是 echo off 命令本身還是會顯示出來,如果你想將 echo off 也隱藏起來,需要使用 @echo off 命令。
@echo off( 從本行開始關閉回顯)
該命令與 echo off 命令相似,但是它會鏈 echo off 命令 也隱藏起來
set
set命令用來設置用戶定義或命名的環境變量,在批處理文件中設置的環境變量是臨時存儲在內存中的,在批處理文件執行完成后就會銷毀
例如:下面的set命令 創建了一個名為 THE_KING的環境變量,將其值設置 為 Elvis ,並輸出到控制台上
set THE_KING=Elvis echo %THE_KING% pause
label
使用冒號設置一個標簽,然后可以將該標簽傳遞給goto命令,這樣程序就會跳轉到標簽指定的位置,下面的語句定義了一個名為 end 的標簽
:end
有關於標簽的更多例子請參見 對 goto 命令的介紹
goto
goto命令強制批處理文件跳轉到指定標簽所在的位置繼續執行,示例如下:
echo Start goto end echo I Can guarantee this line will not be executed :end echo End pause
在第一行輸出了 Start 之后,批處理文件會執行goto 命令,跳轉到 end 標簽后的語句繼續執行,結果是 跳過了第三行內容,沒有執行它
if
if用來執行條件測試,有下面三種用法
- 測試變量的值
- 測試文件是否存在
- 測試錯誤值
使用下面的命令格式 來測試一個變量的值
if variable==value
例如,下面的if語句將會測試變量myVar的值 是不是 3 ,如果是,則它在控制台輸出 Correct
set myVar=3 if %myVar%==3 echo Correct
運行上面的命令時,會對變量myVar的值進行判斷,並輸出 Correct
可以使用下面的命令格式 來測試文件是否存在
if exist c:\temp\myFile.txt goto start
如果 在 c:\temp目錄下存在myFile.txt文件,程序就會跳轉 start標簽所在的位置繼續執行,也可以使用 not關鍵字來對一條 語句取反
not
not關鍵字用來對一條語句取反,例如,下面的命令在變量 myVar的值不是3時 輸出 Correct
set myVar=3 if not %myVae%==3 echo Correct pause
當 c:\temp目錄下 不存在 myFile.txt文件時,下面的命令會跳轉到標簽end所在的位置繼續執行。
if not exist c:\temp\myFile.txt goto end
exist
當測試文件是否存在時,會使用到 if 語句 和 exist命令,示例程序請參見 if 命令的例子
接收參數
可以給批處理文件傳遞參數,並使用 %1 來引用第一個參數, %2 引用第二個參數,依次類推,例如:下面的命令將在控制台輸出第一個參數
echo %1
如果批處理文件的名字是test.bat,並使用 test Hello 命令來調用它 ,那么將會在控制台輸出 Hello
下面的批處理文件會對第一個參數的值進行檢查,如果第一個參數是 start ,它就會輸出 Starting application ,如果第一個參數是 stop,就輸出 Stopping application ,否則 輸出 Invalid parameter
echo off if %1==start goto start if %1==stop goto stop goto invalid :start echo Starting application goto end :stop echo Stopping application goto end :invalid echo Invalid parameter goto end :end
如果檢查運行批處理文件 是否帶有參數時,可以將 %1 與空字符串比較,例如 對於下面的批處理文件,如果運行時沒有使用參數,就會在控制台輸出 No parameter
if "1%"=="" echo No parameter
或者
if ""%1""=="""" echo No parameter
shift
shift 命令用來將 全體參數向后移動一位,將%2的值 賦值給了1%,將%3的值賦值給%2,依次類推,例如下面的代碼使用了一條shift命令
echo off shift echo %1 echo %2
如果在運行批處理文件時,附加了三個參數 a、b、c,那么上面的命令會有如下輸出
b
c
移動之后,要使用%0 來 引用第一個參數,而現在最后一個參數則失效了。
call
call命令用來調用另外一條命令。
批處理中調用另外一個批處理的命令,否則剩下的批處理指令將不會被執行 有時有的應用程序用start調用出錯的,也可以call調用
setLocal
在批處理文件中使用setLocal對環境變量的修改只在當前批處理腳本中有效,當遇到endLocal命令后,在setLocal之后設置的環境變量恢復到使用SETLOCAL語句以前的狀態。
start
打開一個新的Windows控制台,並可以為這個新的控制台指定一個名字,例如:
start "Title"
此外,在Titile 后面,還有傳入一條將要在新的控制台中執行的命令
例如 :在新的Windows控制台中 輸出 this is new Title
start "Title" echo this is New Title
那么上面大致介紹了 批量處理文件的一些 DOS 命令,下面就進入我們要了解的重點:Tomcat 的啟動批處理文件
catalina.bat批處理文件
catalina.bat批處理文件用來啟動或者關閉Tomat,另外兩個文件(startup.bat 和 shutdown.bat)提供了更簡單的啟動和關閉Tomcat的方法,實際上,startup.bat 和 shutdowm.bat都會調用catalian.bat並傳入相應的參數,
在%CATALINA_HOME%/bin目錄下,需要以下面的語法格式調用catalina.bat 腳本
catalina
或者使用下面的語法從%CATALINA_HOME%/bin目錄下調用該腳本
bin\catalina
在兩種情況下 參數 command 的可選值包括:
- debug 在調試器中啟動 Catalina
- debug -security 在使用安全管理器的情況下調試Catalina
- embedded 以嵌入模式啟動Catalina
- jpda start 在JPDA調試器下啟動Catalina
- run 在當前窗口中啟動 Catalina
- run -security 在當前窗口中,通過安全管理器啟動Catalina
- start 在新窗口啟動Catalina
- start -security 在新窗口通過安全管理器啟動Catalina
- stop 關閉Catalina
例如 要想在新窗口啟動Catalina,可以使用如下命令
catalina start
