Hoi allemaal,
Ik zit weer eens met een uitdaging:
Ik wil graag via een batch bestand een controle op een service uitvoeren. Dus als een bepaalde service (bijvoorbeeld mysql) gestart is, dat hij dan verder gaat met het uitvoeren van het script, en als hij gestopt is, dat hij dan de bewuste service start.
Ik heb al dit:
sc query mysql |find /c /i "RUNNING"
Hier krijg ik een 1 of een 0 uit, 1 voor running en 0 voor stopt
Maar hoe kan ik nu iets met die 1 of 0 doen? Iets met If Exist of iets dergelijks?
Alvast bedankt!
Heb je een specifieke reden om daar batch scripting voor te gebruiken?
vbs heeft op een windows machine net wat meer mogelijkheden omdat je de hele wmi ook kan gebruiken (powershell is nog beter maar is niet altijd even makkelijk)
als je het met batch moet doen zul je met errorlevels kunnen werken.
Code:@ECHO OFF sc query mysql |find /c /i "RUNNING" IF ERRORLEVEL 1 GOTO ServiceRuns REM start service net start mysql REM Loop tot de service gestart is met een pause van 5 seconden :Wait PING -n 6 127.0.0.1>nul VERIFY >nul sc query mysql |find /c /i "RUNNING" IF ERRORLEVEL 1 GOTO ServiceRuns GOTO Wait :ServiceRuns REM rest van de code
Laatst aangepast door Ellasar : 16 mei 2012 om 13:27
Bedankt Ellasar!
Ik heb uiteindelijk dit gebruikt:
FOR /F "tokens=1,2,3,4" %%A IN ('SC.EXE \\server QUERY VMtools ^| FIND /I "STATE"') DO SET STATE=%%D
IF /I "%STATE%"=="RUNNING" GOTO BACKUP
Voorbeeld van dat spreekwoord met wegen en rome enzo....
Mooi dat het lukt