在完成一個web應用項目后,領導要求做一個配置用的批處理文件,能夠自動完成jdk的安裝,tomcat的安裝,web應用的部署,環境變量的注冊,tomcat服務的安裝和自動啟動
參考了網上很多的類似的批處理代碼后,整合成了如下的批處理
方案如下,先安裝jdk,然后將已經部署好的web應用連同解壓好的tomcat文件夾(用的不是安裝版,這樣比較簡單)拷貝到目的目錄,然后寫環境變量,然后注冊服務。
第一個文件setup-1.bat
@echo off %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit set myjdkpath=C:\Java\1.8.0_60 set myjrepath=C:\Java\1.8.0_60\jre set mytomcatpath=C:\apache-tomcat-8.0.26 echo ********************************************** echo. echo 將要安裝jdk echo. echo 安裝請按任意鍵,退出直接關閉窗口 echo. echo ********************************************** pause echo. echo 正在安裝jdk,請不要執行其他操作 echo. echo 請稍等,這個時間大約需要二、三分鍾 echo. start /WAIT jdk-8u60-windows-x64.exe /qn INSTALLDIR=C:\Java\1.8.0_60 echo jdk安裝完畢 echo ********************************************** echo. echo 將要安裝Tomcat軟件 echo. echo 安裝請按任意鍵,退出直接關閉窗口 echo. echo ********************************************** pause echo. echo 正在安裝Tomcat 請不要執行其他操作 echo. echo 請稍等,這個時間大約需要五、六分鍾 echo. xcopy /e /i apache-tomcat-8.0.26 c:\apache-tomcat-8.0.26 >nul echo Tomcat安裝完畢 echo ********************************************** echo. echo 將要安裝配置環境變量 echo. echo 繼續請按任意鍵,退出直接關閉窗口 echo. echo ********************************************** pause setx JRE_HOME %myjrepath%>nul setx JAVA_HOME %myjdkpath%>nul setx CLASSPATH .;%myjdkpath%\lib\tools.jar;%myjdkpath%\lib\dt.jar;%myjdkpath%\jre\lib\rt.jar>nul setx PATH %myjdkpath%\bin>nul setx CATALINA_HOME "%mytomcatpath%">nul echo 環境變量配置成功。 echo 退出后請手動運行setup-2.bat,請按任意鍵退出 pause
第二個文件setup-2.bat
@echo off echo ********************************************** echo. echo 設置並啟動TomCat服務 echo. echo 啟動請按任意鍵,退出直接關閉窗口 echo. echo ********************************************** pause call C:\apache-tomcat-8.0.26\bin\service.bat install>nul sc config Tomcat8 start= auto>nul net start Tomcat8 echo 部署工作已經成功完成,按任意鍵退出 pause
下面說一下為什么要用兩個文件還要手動運行,而不是放在一個bat中,這也是我遇到的一個問題。
答案就是 bat寫完環境變量后重啟才能生效!bat寫完環境變量后重啟才能生效!bat寫完環境變量后重啟才能生效!(重要的事情說三遍)
第二個文件安裝tomcat服務的時候需要環境變量,之前放在一個文件里面的時候總是報環境變量CATALINA_HOME錯誤,但是我用命令行單獨安裝服務的時候是能夠成功安裝的,也就是說顯示的環境變量並沒有錯!折騰了很久,后來突然想到了這個可能性。(太菜,請嘲笑我) 結果一試果然如此。 我也想過寫第三個bat來調用這兩個bat,但是這樣還是老問題,看來即使第三個bat調用這兩個bat,他們也是在一個線程里面的。
所以目前就采用了手動分別一次運行這兩個文件的方法。如果之后有改進方案了再來補充