@ECHO OFF SETLOCAL SET ERRORLEVEL= SET EXITCODE= REM Basic sanity checks: Inform the curious user what is this script for SET NEXT_ARG=%1 IF NOT DEFINED NEXT_ARG GOTO :TOOL_NOT_SPECIFIED IF /I %NEXT_ARG% == /? GOTO :WRONG_ARGS IF /I %NEXT_ARG% == /h GOTO :WRONG_ARGS IF /I %NEXT_ARG% == /help GOTO :WRONG_ARGS IF /I %NEXT_ARG% == -? GOTO :WRONG_ARGS IF /I %NEXT_ARG% == -h GOTO :WRONG_ARGS IF /I %NEXT_ARG% == --help GOTO :WRONG_ARGS REM Use script location for directory navigation SET SCRIPT_LOCATION=%~dp0 IF NOT "%SCRIPT_LOCATION:~-32%"=="\j2ee\cluster\bootstrap\scripts\" GOTO :ERR_SCRIPT_LOCATION REM Check input parameters SET NODE_NAME=%1 IF NOT DEFINED NODE_NAME GOTO :TOOL_NOT_SPECIFIED SHIFT SET STARTUP_FILE=%1 IF NOT DEFINED STARTUP_FILE ( SET STARTUP_FILE=%SCRIPT_LOCATION%startup.properties ) ELSE ( SHIFT ) IF NOT EXIST %STARTUP_FILE% GOTO :STARTUP_FILE_NOT_FOUND SET PARAMETERS= :PARAMETERS_LOOP SET NEXT_ARG=%1 IF NOT DEFINED NEXT_ARG GOTO :LOOP_EXIT SET PARAMETERS=%PARAMETERS% %NEXT_ARG% SHIFT GOTO :PARAMETERS_LOOP :LOOP_EXIT REM Get the instance number: 2 chars starting at 34 symbol backwards REM SCRIPT_LOCATION is like "D:\usr\sap\HSI\J00\j2ee\cluster\bootstrap\scripts\" SET INSTANCE_NUMBER=%SCRIPT_LOCATION:~-34,2% REM Attempt to detect wrong paths shorter than 34 chars: INSTANCE_NUMBER will be C: or D: etc. IF EXIST %INSTANCE_NUMBER% GOTO :ERR_SCRIPT_LOCATION REM Get the profile path FOR /F "skip=3 tokens=1*" %%i IN ('%SCRIPT_LOCATION%..\..\..\..\exe\sapcontrol -nr %INSTANCE_NUMBER% -prot PIPE -function ParameterValue SAPPROFILE_IN_EFFECT') DO SET PROFILE=%%i IF "%PROFILE%" == "FAIL:" GOTO :SAPSTARTSRV_ERROR IF NOT EXIST %PROFILE% GOTO :PROFILE_ERROR REM Launch the tool via JSF %SCRIPT_LOCATION%..\..\..\..\exe\jstart.exe -launch -nodename=%NODE_NAME% -file=%STARTUP_FILE% pf=%PROFILE% %PARAMETERS% SET EXITCODE=%ERRORLEVEL% SET OUTPUT_FILE=%SCRIPT_LOCATION%..\..\..\..\work\jvm_%NODE_NAME%.out IF EXIST %OUTPUT_FILE% TYPE %OUTPUT_FILE% IF %EXITCODE% NEQ 0 ( ECHO ERROR: JStart exit code [%EXITCODE%], see details in log file [dev_%NODE_NAME%] ) GOTO :END REM ERROR - the script parameters are totaly wrong :WRONG_ARGS SET EXITCODE=10 ECHO %0: This helper script is not designed to be run directly GOTO :END REM ERROR - the script is located in wrong folder :ERR_SCRIPT_LOCATION SET EXITCODE=11 ECHO Instance not found: The launcher script is located in wrong folder: [%SCRIPT_LOCATION%] ECHO Expected script location: [...\j2ee\cluster\bootstrap\scripts\] GOTO :END REM ERROR - startup file not found :STARTUP_FILE_NOT_FOUND SET EXITCODE=12 ECHO FATAL: Startup file not found: [%STARTUP_FILE%] GOTO :END REM ERROR - no tool specified :TOOL_NOT_SPECIFIED SET EXITCODE=13 ECHO FATAL: No tool specified for launch goto:END REM ERROR - the instance can not be parsed :INSTANCE_ERROR SET EXITCODE=14 ECHO FATAL: Instance not found GOTO :END REM ERROR - the profile does not exist :PROFILE_ERROR SET EXITCODE=15 ECHO. FATAL: Profile not found: [%PROFILE%] GOTO :END REM ERROR - the sapstartsrv is not started :SAPSTARTSRV_ERROR SET EXITCODE=16 ECHO. FATAL: SAPSTART service for instance [%INSTANCE_NAME%] is not started GOTO :END :END IF DEFINED EXITCODE EXIT /B %EXITCODE%