net start [serviceName]
и
net stop [serviceName]
говорят Вам, успешно выполнились ли они или перестали работать довольно ясно. Например
U:\>net stop alerter The Alerter service is not started. More help is available by typing NET HELPMSG 3521.
При выполнении от пакетного файла, у Вас есть доступ к ERRORLEVEL кода возврата. 0 указывает на успех. Что-либо выше указывает на отказ.
Как bat-файл,
error.bat
:@echo off net stop alerter if ERRORLEVEL 1 goto error exit :error echo There was a problem pause
вывод похож на это:
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 . . .
Коды возврата
- 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
Редактирование 20.04.2015
Коды возврата:
команда NET не возвращает зарегистрированные коды возврата класса Win32_Service (Сервис Не Активный Тайм-аут Запроса на обслуживание, и т.д.) и для многих ошибок просто возвратит Errorlevel 2.
Взгляд здесь: http://ss64.com/nt/net_service.html
«Лучший» способ - избежать необходимости в длине:)
Рассматривали ли вы сохранение отслеживать размер с помощью istream :: gcount ()?