How do I restart a Windows service from a script?
Solution 1:
The poster wants to ensure the service is stopped before trying to restart it. You can use a loop on the output of "sc query" doing something like this:
:stop
sc stop myservice
rem cause a ~10 second sleep before checking the service state
ping 127.0.0.1 -n 10 -w 1000 > nul
sc query myservice | find /I "STATE" | find "STOPPED"
if errorlevel 1 goto :stop
goto :start
:start
net start | find /i "My Service">nul && goto :start
sc start myservice
Solution 2:
May be missing something, but I use this all the time:
net stop "myservice"
net start "myservice"
or shorter:
net stop "myservice" && net start "myservice"
Solution 3:
Dead simple with powershell:
PS >Restart-Service MySrvcHere
Even better, using display names:
PS >Restart-Service -displayname "My Service Name Here"
Get-Help Restart-Service
for more
Solution 4:
If it is purely for restarting the service, you can use
Net stop myservice
Net start myservice
However, if you want access to the options of sc, you can use the start /wait command
start /B /WAIT CMD /C "sc stop myservice"
start /B /WAIT CMD /C "sc start myservice"
this technique is a more general solution that can be applied to any command.
Solution 5:
To have quiet restart of some service, which asks confirmations to be stopped (as Server service, for example), You could add /y to the end of stop command.
net stop Server /y
net start Server
It would be helpful for automatic script execution.