2015-12-04 4 views
-2

вы можете запустить программу только в том случае, если она запущена? Все это из командного файла. Также вы можете закрыть, если вы начали? Из того же файла.Запустите программу, если она не запущена, закройте программу, если она запущена.

@echo off 
tasklist /fi "patch and program.exe" > nul 
if errorlevel 1 start program 

Как я могу продолжить?

ответ

0

Вот как запустить службу:

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 запустит программу.

+0

не работает, это программа, вы можете использовать tasklist/fi? –

+0

Название ваших вопросов говорит мне, что речь идет об услугах. Услуги! = Программы. Пожалуйста, отредактируйте свой пост и уточните, что вы просите. – MichaelS

+0

@MarioChiuri Я обновил свой ответ. Проверьте раздел EDIT. – MichaelS

Смежные вопросы