Я пытаюсь создать пакет, если IF program.exe не выполняется в процессе, он будет запускать код ниже. В vb.net это легко, но я не хочу создавать программы. Я предполагаю, что сценарий VBS будет работать, но я пытаюсь выяснить, могу ли я создать пакетную подпрограмму для выполнения вышеизложенного.
.летучая мышь:
@ECHO OFF
REM peudo code:
If NOT program.exe Exist
'Do something.
Выше не работает, так что мне не хватает?
windows
command-line
batch
batch-file
Бенджамин Джонс
источник
источник
tasklist | findstr program.exe
вы получите одну строку, если найдете, и никаких строк, если нет.Ответы:
Вот и я:
Он использует Tasklist.exe, чтобы получить список задач, которые соответствуют имени вашей программы, а затем использует find, чтобы выяснить, существует ли программа в списке.
Затем он использует код ошибки, возвращенный функцией find, чтобы определить, был ли он найден, и, если это так, выполняет код (в данном случае - эхо).
Вывод из списка задач и поиска отправляются в NULL.
Источник
источник
Вот мое предложение:
Как и @ techie007 предложил, я бы порекомендовал, так
tasklist /FI "IMAGENAME eq program.exe"
как он выводит только точные совпадения, поэтому, когда вы ищете,cmd.exe
вы не поражаетесь,htcmd.exe
не зная, почему он обнуляет его, хотя он и передается по каналу .Я не уверен, почему он предлагает, чтобы
find /I /N
я лично предпочел,findstr
поскольку это намного более универсально, но в его предложении это делает работу.В последней части мое предложение будет отличаться от @ techie007,
if %ERRORLEVEL% == 1 goto mycode
goto eof
это будет работать как оператор if else, поэтому, если программа не запущена, перейдите вmycode
(где вы будете хорошо заполнять ... свой код), в противном случае перейдите к пункту,eof
который завершит пакет ,Моя единственная ошибка с @ techie007 заключается
if "%ERRORLEVEL%"=="0" echo Program is running.
в том, что независимо от того, является ли это истиной или ложью, он запускает следующую строку кода. Вот почему я хотел порекомендовать использоватьgoto
методологию, поскольку она будет поддерживать несколько строк кода.источник
:eof
метка теперь встроена в Goto: «Команда GOTO теперь принимает целевую метку: EOF, которая передает управление в конец текущего файла пакетного сценария. Это простой способ выйти из файла пакетного сценария без определения метки. " (goto /?
) :)GOTO:eof
это тот, который я имею в виду, и да, он работает на большинстве систем, я просто предпочитаю использовать расширенный метод для обученияЭто сработало для меня.
источник
Следующая работа для меня в Windows 7.
Команда (ы) после
&&
в той же строке будет выполняться, когдаfindstr
найдены"appName.exe"
и пропустить команду (ы) после в||
той же строке. В противном случае, еслиfindstr
не удалось найти"appName.exe"
, он пропустит команды после&&
и выполнит их после||
.Если вы хотите несколько команд для успеха и / или неудачи:
источник