Advertisement
Guest User

Untitled

a guest
May 5th, 2016
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 3.84 KB | None | 0 0
  1. @ECHO off
  2. IF "%1"=="" GOTO Usage
  3. IF "%~2"=="" GOTO Usage
  4.  
  5. SET ACTION=%1
  6. SET SERVICENAME="%~2"
  7.  
  8. IF "%3"=="" (
  9.     SET SYSTEMNAME=%COMPUTERNAME%
  10. ) ELSE (
  11.     SET SYSTEMNAME=%3
  12. )
  13.  
  14. IF "%ACTION%" == "stop" (
  15.     SET ACTION=STOP
  16. ) ELSE IF "%ACTION%" == "STOP" (
  17.     SET ACTION=STOP
  18. ) ELSE IF "%ACTION%" == "start" (
  19.     SET ACTION=START
  20. ) ELSE IF "%ACTION%" == "START" (
  21.     SET ACTION=START
  22. ) ELSE IF "%ACTION%" == "restart" (
  23.     SET ACTION=RESTART
  24. ) ELSE IF "%ACTION%" == "RESTART" (
  25.     SET ACTION=RESTART
  26. ) ELSE GOTO Usage
  27.  
  28. SET STATE=
  29. SET CURRENT_STATUS=
  30. SET /A DEFAULT_DELAY=5
  31. SET /A SLEEP_COUNT=0
  32. SET /A RESTARTED=0
  33. SET /A MAX_WAIT_PERIODS=5
  34.  
  35. ECHO.
  36. ECHO Attempting to %ACTION% service %SERVICENAME% on computer %SYSTEMNAME%.
  37.  
  38. PING -n 1 %SYSTEMNAME% | FIND "ms" >nul 2>&1
  39. IF ERRORLEVEL 1 IF NOT ERRORLEVEL 2 (
  40.     ECHO Failure! Server \\%SYSTEMNAME% or service %SERVICENAME% is not accessible or is offline!
  41.     EXIT /B 1
  42. )
  43. REM SC \\%SYSTEMNAME% query %SERVICENAME% | FIND "FAILED 1060" >nul 2>&1
  44. REM IF ERRORLEVEL 0 IF NOT ERRORLEVEL 1 (
  45. REM    ECHO Failure! Service %SERVICENAME% is not valid!
  46. REM    EXIT /B 2
  47. REM )
  48. REM SC \\%SYSTEMNAME% query %SERVICENAME% | FIND "STATE" >nul 2>&1
  49. REM IF ERRORLEVEL 1 IF NOT ERRORLEVEL 2 (
  50. REM    ECHO Failure! Server \\%SYSTEMNAME% or service %SERVICENAME% is not accessible or is offline!
  51. REM    EXIT /B 3
  52. REM )
  53.  
  54. :Dispatch
  55. FOR /f "tokens=*" %%i IN ('SC \\%SYSTEMNAME% query %SERVICENAME% ^| FIND "STATE"') DO SET STATE=%%i
  56.  
  57. ECHO %STATE% | FINDSTR /C:"1" >nul
  58. IF %ERRORLEVEL%==0 SET CURRENT_STATUS=STOPPED
  59. ECHO %STATE% | FINDSTR /C:"2" >nul
  60. IF %ERRORLEVEL%==0 SET CURRENT_STATUS=START_PENDING
  61. ECHO %STATE% | FINDSTR /C:"3" >nul
  62. IF %ERRORLEVEL%==0 SET CURRENT_STATUS=STOP_PENDING
  63. ECHO %STATE% | FINDSTR /C:"4" >nul
  64. IF %ERRORLEVEL%==0 SET CURRENT_STATUS=RUNNING
  65. ECHO %STATE% | FINDSTR /C:"5" >nul
  66. IF %ERRORLEVEL%==0 SET CURRENT_STATUS=CONTINUE_PENDING
  67. ECHO %STATE% | FINDSTR /C:"6" >nul
  68. IF %ERRORLEVEL%==0 SET CURRENT_STATUS=PAUSE_PENDING
  69. ECHO %STATE% | FINDSTR /C:"7" >nul
  70. IF %ERRORLEVEL%==0 SET CURRENT_STATUS=PAUSED
  71.  
  72. ECHO Current status of service is %CURRENT_STATUS%
  73.  
  74. IF NOT "%CURRENT_STATUS%"=="RUNNING" IF NOT "%CURRENT_STATUS%"=="STOPPED" IF NOT "%CURRENT_STATUS%"=="PAUSED" (
  75.     IF "%SLEEP_COUNT%"=="%MAX_WAIT_PERIODS%" (
  76.         ECHO Service state won't change. Script exececution is canceled.
  77.         EXIT /B 4
  78.     )
  79.     ECHO Service State is changing, waiting %DEFAULT_DELAY% seconds...
  80.     TIMEOUT /T %DEFAULT_DELAY%
  81.     SET /A SLEEP_COUNT+=1
  82.     GOTO Dispatch
  83. )
  84.  
  85. IF "%ACTION%"=="START" (
  86.     IF "%CURRENT_STATUS%"=="RUNNING" (
  87.         ECHO Service %SERVICENAME% is running.
  88.         GOTO EndExit
  89.     ) ELSE (
  90.         GOTO StartService
  91.     )
  92. ) ELSE IF "%ACTION%"=="RESTART" (
  93.     IF "%CURRENT_STATUS%"=="RUNNING" (
  94.         IF %RESTARTED%==1 (
  95.             ECHO Service %SERVICENAME% restarted.
  96.             GOTO EndExit
  97.         )
  98.         SET /A SLEEP_COUNT=0
  99.         GOTO StopService
  100.     ) ELSE (
  101.         SET /A RESTARTED=1
  102.         GOTO StartService
  103.     )
  104. ) ELSE IF "%ACTION%"=="STOP" (
  105.     IF "%CURRENT_STATUS%"=="STOPPED"  (
  106.         ECHO Service %SERVICENAME% is stopped.
  107.         GOTO EndExit
  108.     ) ELSE (
  109.         GOTO StopService
  110.     )
  111. )
  112.  
  113. :StartService
  114. ECHO Starting %SERVICENAME% on \\%SYSTEMNAME%
  115. SC \\%SYSTEMNAME% start %SERVICENAME% >nul 2>&1
  116. SET SLEEP_COUNT=0
  117. GOTO Dispatch
  118.  
  119. :StopService
  120. ECHO Stopping %SERVICENAME% on \\%SYSTEMNAME%
  121. SC \\%SYSTEMNAME% stop %SERVICENAME% >nul 2>&1
  122. SET SLEEP_COUNT=0
  123. GOTO Dispatch
  124.  
  125. :Usage
  126. ECHO This script can start/stop/restart a local or remote service, waiting for the service to stop/start ^(if necessary^).
  127. ECHO.
  128. ECHO Usage:
  129. ECHO %0 ^<start^|stop^|restart^> ^<SERVICE^> [SYSTEM]
  130. ECHO.
  131. ECHO If no SYSTEM is provided, the script attempts to execute on the local system.
  132. EXIT /B 5
  133.  
  134. :EndExit
  135. ECHO.
  136. EXIT /B 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement