Немного старого поста, но я должен сделать кучу деинсталляций / установок Tomcat из-за обновления другого приложения (термин, который я использую свободно) и пытался выяснить, как сделать нечто подобное, чтобы избежать использования пользовательского интерфейсаи обеспечить согласованность.
Некоторые советы по написанию сценариев (основанные на моем опыте до сих пор):
REM -- Use variables for the Tomcat install directory & executable:
set TomcatDir=%ProgramFiles%\Tomcat
set TomcatExe=%TomcatDir%\bin\Tomcat7.exe
REM -- If using multiple instances, turn these in to array
set TomcatInstance[1]=Tomcat7
set TomcatInstance[2]=MyAppInstance1
set TomcatInstance[3]=MyAppInstance2
set TomcatInstance[4]=MyAppInstance3
set TomcatInstance[5]=MyAppInstance4
REM -- When updating/adding Java options and you need to use a ";" between
REM -- values, single-quote the semi-colon, ';' so it isn't intepretted as a CrLf
REM -- For example,
call "%TomcatExe%" //US/%TomcatInstance% ++JvmOptions "-Djava.library.path=%TomcatDir%\bin';'%TomcatDir%\endorsed"
REM -- So to ensure all instances have the same settings...
for /L %I in (1,1,5) do (
call "%TomcatExe%" //US/!TomcatInstance[%I]! ++JvmOptions "-Djava.library.path=%TomcatDir%\bin';'%TomcatDir%\endorsed"
)
REM -- Block scripts sections with setlocal/endlocal
REM -- "EnableDelayedExpansion" allows the above delayed variable expansion to occur
::--==--==--==--==--==--==--==--==--==--==
:Routine_Name
::--==--==--==--==--==--==--==--==--==--==
setlocal EnableDelayedExpansion
echo script commands go here
endlocal
goto :EOF
Примечание. Это было бы намного проще в реальном языке сценариев (vbs, js или ps), но мне нужно оставить скрипт "легким", чтобы его можно было модифицировать для тех, кто меня заменит, когда я покину свой текущий концерт.
FWIW, документация для Tomcat7: http://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html.