I want to write a batch file that performs the following operations:
The code samples I googled so far turned out not to be working, so I decided not to post them.
Starting a service is done by:
net start "SERVICENAME"
Windows natively has a command line tool which can be used to check if a service is running or not on a remote computer. The utility/tool name is SC.exe. SC.exe has parameter to specify the remote computer name. You can check service status only on one remote computer at a time.
The net start command is used to start the services. Also if the service has spaces in it's name, it must be enclosed in double quotes. Once you have entered the text, save and close the file. When you want to start up the program, all you need to do is double click on the batch file and it will run.
To check a service's state, use sc query <SERVICE_NAME>
. For if blocks in batch files, check the documentation.
The following code will check the status of the service MyServiceName
and start it if it is not running (the if block will be executed if the service is not running):
for /F "tokens=3 delims=: " %%H in ('sc query "MyServiceName" ^| findstr " STATE"') do ( if /I "%%H" NEQ "RUNNING" ( REM Put your code you want to execute here REM For example, the following line net start "MyServiceName" ) )
Explanation of what it does:
As for your second question, the argument you will want to pass to net start
is the service name, not the display name.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With