Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Stop and Start a service via batch or cmd file?

How can I script a bat or cmd to stop and start a service reliably with error checking (or let me know that it wasn't successful for whatever reason)?

like image 395
Keng Avatar asked Sep 25 '08 15:09

Keng


People also ask

Which command is used to start or stop the services?

You can only use the "net" command to start or stop services. The "sc" command allows you to perform more tasks, including start, stop, enable, or disable services, among other options.


2 Answers

Use the SC (service control) command, it gives you a lot more options than just start & stop.

   DESCRIPTION:           SC is a command line program used for communicating with the           NT Service Controller and services.   USAGE:       sc <server> [command] [service name]  ...        The option <server> has the form "\\ServerName"       Further help on commands can be obtained by typing: "sc [command]"       Commands:         query-----------Queries the status for a service, or                         enumerates the status for types of services.         queryex---------Queries the extended status for a service, or                         enumerates the status for types of services.         start-----------Starts a service.         pause-----------Sends a PAUSE control request to a service.         interrogate-----Sends an INTERROGATE control request to a service.         continue--------Sends a CONTINUE control request to a service.         stop------------Sends a STOP request to a service.         config----------Changes the configuration of a service (persistant).         description-----Changes the description of a service.         failure---------Changes the actions taken by a service upon failure.         qc--------------Queries the configuration information for a service.         qdescription----Queries the description for a service.         qfailure--------Queries the actions taken by a service upon failure.         delete----------Deletes a service (from the registry).         create----------Creates a service. (adds it to the registry).         control---------Sends a control to a service.         sdshow----------Displays a service's security descriptor.         sdset-----------Sets a service's security descriptor.         GetDisplayName--Gets the DisplayName for a service.         GetKeyName------Gets the ServiceKeyName for a service.         EnumDepend------Enumerates Service Dependencies.        The following commands don't require a service name:       sc <server> <command> <option>         boot------------(ok | bad) Indicates whether the last boot should                         be saved as the last-known-good boot configuration         Lock------------Locks the Service Database         QueryLock-------Queries the LockStatus for the SCManager Database   EXAMPLE:           sc start MyService 
like image 67
Ferruccio Avatar answered Oct 14 '22 03:10

Ferruccio


net start [serviceName] 

and

net stop [serviceName] 

tell you whether they have succeeded or failed pretty clearly. For example

U:\>net stop alerter The Alerter service is not started.  More help is available by typing NET HELPMSG 3521. 

If running from a batch file, you have access to the ERRORLEVEL of the return code. 0 indicates success. Anything higher indicates failure.

As a bat file, error.bat:

@echo off net stop alerter if ERRORLEVEL 1 goto error exit :error echo There was a problem pause 

The output looks like this:

U:\>error.bat The Alerter service is not started.  More help is available by typing NET HELPMSG 3521.  There was a problem Press any key to continue . . . 

Return Codes

 - 0 = Success  - 1 = Not Supported  - 2 = Access Denied  - 3 = Dependent Services Running  - 4 = Invalid Service Control  - 5 = Service Cannot Accept Control  - 6 = Service Not Active  - 7 = Service Request Timeout  - 8 = Unknown Failure  - 9 = Path Not Found  - 10 = Service Already Running  - 11 = Service Database Locked  - 12 = Service Dependency Deleted  - 13 = Service Dependency Failure  - 14 = Service Disabled  - 15 = Service Logon Failure  - 16 = Service Marked For Deletion  - 17 = Service No Thread  - 18 = Status Circular Dependency  - 19 = Status Duplicate Name  - 20 = Status Invalid Name  - 21 = Status Invalid Parameter   - 22 = Status Invalid Service Account  - 23 = Status Service Exists  - 24 = Service Already Paused 

Edit 20.04.2015

Return Codes:

The NET command does not return the documented Win32_Service class return codes (Service Not Active,Service Request Timeout, etc) and for many errors will simply return Errorlevel 2.

Look here: http://ss64.com/nt/net_service.html

like image 42
Bill Michell Avatar answered Oct 14 '22 02:10

Bill Michell