Kako lahko skript bat ali cmd zanesljivo ustavi in zažene storitev s preverjanjem napak (ali mi sporoči, da iz kakršnega koli razloga ni bil uspešen)?
net start [serviceName]
in
net stop [serviceName]
jasno povedo, ali so bili uspešni ali neuspešni. Na primer
U:\>net stop alerter
The Alerter service is not started.
More help is available by typing NET HELPMSG 3521.
Če se izvajajo iz paketne datoteke, imate dostop do ERRORLEVEL povratne kode. 0 pomeni uspeh. Višja vrednost pomeni neuspeh.
Kot datoteka bat, error.bat
:
@echo off
net stop alerter
if ERRORLEVEL 1 goto error
exit
:error
echo There was a problem
pause
Izpis je videti takole:
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 . . .
Kode vrnitve
- 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
Urejanje 20.04.2015
Kode za vračanje: Ukaz NET ne vrača dokumentiranih kod vrnitve razreda Win32_Service (Storitev ni aktivna, časovna omejitev zahteve storitve itd.) in za številne napake preprosto vrne kodo stopnje napake 2.
Poglejte tukaj: http://ss64.com/nt/net_service.html
Uporabite lahko ukaz NET START in nato preverite okoljsko spremenljivko ERRORLEVEL, npr.
net start [your service]
if %errorlevel% == 2 echo Could not start service.
if %errorlevel% == 0 echo Service started successfully.
echo Errorlevel: %errorlevel%
Opozorilo: To sem napisal iz glave, vendar mislim, da bo delovalo.
Uporaba povratnih kod iz net start
in net stop
se mi zdi najboljša metoda. Poskusite si ogledati to: Net Start return codes.