| @echo off |
| set PATH= |
| set JAVA_HOME= |
| set PATH= |
| GOTO FUNCTION_END |
| :abort |
| echo aborting: %EXCEPTION% |
| exit /b 1 |
| :default |
| set INSTANCE_NAME=mkebsboot |
| set INSTANCE_HOME=/mnt/tmp |
| set LOG_DIR=/mnt/tmp |
| exit /b 0 |
| :mkebsboot |
| set TMP_DIR=/mnt/tmp |
| exit /b 0 |
| :findPid |
| set FOUND_PID= |
| set _expression=%1 |
| shift |
| set FIND_PROCESS=TASKLIST /FI "WINDOWTITLE eq %_expression%" /NH |
| FOR /F "usebackq tokens=2 delims= " %%A IN (`cmd /c "%FIND_PROCESS% 2>NUL"`) DO ( |
| SET FOUND_PID=%%A |
| ) |
| if defined FOUND_PID ( |
| exit /b 0 |
| ) else ( |
| set EXCEPTION=%_expression% not found |
| exit /b 1 |
| ) |
| :forget |
| SETLOCAL |
| set FOUND_PID= |
| set NEXT_MINUTE= |
| set INSTANCE_NAME=%1 |
| shift |
| set SCRIPT=%1 |
| shift |
| set LOG_DIR=%1 |
| shift |
| CALL :findProcess %INSTANCE_NAME% |
| if defined FOUND_PID ( |
| echo %INSTANCE_NAME% already running pid [%FOUND_PID%] |
| ) else ( |
| CALL :nextMinute |
| set _DATE=%DATE:~4% |
| set CMD=schtasks /create /sd %_DATE% /tn %INSTANCE_NAME% /ru System /tr "cmd /c title %INSTANCE_NAME%&%SCRIPT% >%LOG_DIR%\stdout.log 2>%LOG_DIR%\stderr.log" /sc:once /st %NEXT_MINUTE% |
| echo %INSTANCE_NAME% will start at %NEXT_MINUTE% |
| set SECONDS=%TIME:~6,2% |
| set /a SECOND=60-SECONDS |
| %CMD% >NUL |
| ping -n %SECONDS% 127.0.0.1 > NUL 2>&1 |
| CALL :findProcess %INSTANCE_NAME% |
| if not defined FOUND_PID ( |
| set EXCEPTION=%INSTANCE_NAME% did not start |
| abort |
| ) |
| ) |
| exit /b 0 |
| :FUNCTION_END |
| set PATH=c:\windows\;C:\windows\system32;c:\windows\system32\wbem |
| if not "%1" == "init" if not "%1" == "status" if not "%1" == "stop" if not "%1" == "start" if not "%1" == "tail" if not "%1" == "tailerr" if not "%1" == "run" ( |
| set EXCEPTION=bad argument: %1 not in init status stop start tail tailerr run |
| goto abort |
| ) |
| goto CASE_%1 |
| :CASE_init |
| call :default |
| if errorlevel 1 goto abort |
| call :mkebsboot |
| if errorlevel 1 goto abort |
| md %INSTANCE_HOME% |
| del %INSTANCE_HOME%\mkebsboot.cmd 2>NUL |
| echo @echo off>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo title mkebsboot>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo set PATH=c:\windows\;C:\windows\system32;c:\windows\system32\wbem>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo set INSTANCE_NAME=mkebsboot>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo set TMP_DIR=%TMP_DIR%>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo set INSTANCE_NAME=%INSTANCE_NAME%>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo set INSTANCE_HOME=%INSTANCE_HOME%>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo set LOG_DIR=%LOG_DIR%>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo cd /d %%INSTANCE_HOME%%>>%INSTANCE_HOME%\mkebsboot.cmd |
| md %INSTANCE_HOME% |
| del %INSTANCE_HOME%\mkebsboot.cmd 2>NUL |
| echo @echo off>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo title mkebsboot>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo set PATH=c:\windows\;C:\windows\system32;c:\windows\system32\wbem>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo set INSTANCE_NAME=mkebsboot>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo set TMP_DIR=%TMP_DIR%>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo set INSTANCE_NAME=%INSTANCE_NAME%>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo set INSTANCE_HOME=%INSTANCE_HOME%>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo set LOG_DIR=%LOG_DIR%>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo cd /d %%INSTANCE_HOME%%>>%INSTANCE_HOME%\mkebsboot.cmd |
| echo exit /b 0 >>%INSTANCE_HOME%\mkebsboot.cmd |
| GOTO END_SWITCH |
| :CASE_status |
| call :default |
| if errorlevel 1 goto abort |
| call :findPid %INSTANCE_NAME% |
| if errorlevel 1 goto abort |
| echo [%FOUND_PID%] |
| GOTO END_SWITCH |
| :CASE_stop |
| call :default |
| if errorlevel 1 goto abort |
| call :findPid %INSTANCE_NAME% |
| if errorlevel 1 goto abort |
| if defined FOUND_PID ( |
| TASKKILL /F /T /PID %FOUND_PID% >NUL |
| ) |
| GOTO END_SWITCH |
| :CASE_start |
| call :default |
| if errorlevel 1 goto abort |
| call :forget %INSTANCE_NAME% %INSTANCE_HOME%\%INSTANCE_NAME%.cmd %LOG_DIR% |
| if errorlevel 1 goto abort |
| GOTO END_SWITCH |
| :CASE_tail |
| call :default |
| if errorlevel 1 goto abort |
| tail %LOG_DIR%\stdout.log |
| GOTO END_SWITCH |
| :CASE_tailerr |
| call :default |
| if errorlevel 1 goto abort |
| tail %LOG_DIR%\stderr.log |
| GOTO END_SWITCH |
| :CASE_run |
| call :default |
| if errorlevel 1 goto abort |
| %INSTANCE_HOME%\%INSTANCE_NAME%.cmd |
| GOTO END_SWITCH |
| :END_SWITCH |
| exit /b 0 |