Вот как запустить службу:
SC START SERVICENAME
Вот как остановить службу:
SC STOP SERVICENAME
Вот как проверить, если запущена служба или нет:
FOR /f "tokens=2 delims= " %%a IN (
'wmic service get name^,state /format:TABLE ^| findstr /i /r /c:"SERVICENAME"') DO (
IF %%a==Stopped (
SC START SERVICENAME
)
IF %%a==Running (
SC STOP SERVICENAME
)
)
Последний фрагмент кода запустит сервис, если он остановлен и остановит его, если он запущен.
EDIT:
Если вы хотите сделать это с задачей вместо службы, вот код:
@echo off
tasklist|findstr something.exe
if %ERRORLEVEL%==0 taskkill /IM something.exe
if %ERRORLEVEL%==1 call something.exe
Есть несколько способов для достижения этой цели. Это одна из них. Другим было бы такое:
@echo off
taskkill /im something.exe
if %errorlevel%=128 call something.exe
Этот код сначала попытается убить задачу. Если он запущен, он будет убит с %errorlevel% 0
, поэтому , если заявление будет проигнорировано. Если задача не запущена, команда taskkill
завершится с %errorlevel% 128
, что означает, что такая задача не найдена. Итак, , если будет выполнен, и call something.exe
запустит программу.
не работает, это программа, вы можете использовать tasklist/fi? –
Название ваших вопросов говорит мне, что речь идет об услугах. Услуги! = Программы. Пожалуйста, отредактируйте свой пост и уточните, что вы просите. – MichaelS
@MarioChiuri Я обновил свой ответ. Проверьте раздел EDIT. – MichaelS