Как использовать оператор if с WMIC - PullRequest
2 голосов
/ 12 апреля 2019

это мой первый пост.Я использую пакетную команду, чтобы проверить, запущен ли экземпляр моей программы на основе аргумента командной строки.Я могу видеть, работает ли он, используя следующий код:

wmic Path win32_process Where "CommandLine Like '%Account A%' AND Caption Like '%Leads Manager.exe%'"

Если процесс существует, я получу полный анализ информации о процессе, но если процесс не выполняется, яget No Instance(s) Available.

Я хочу иметь возможность выполнить оператор If, поэтому, если результат показывает No Instance(s) Available. Я хочу запустить команду без отображения информации о процессе, и если она существует, я хочу повторитьAccount A is already running

Надеюсь, кто-то с большим опытом может направить меня в правильном направлении

1 Ответ

1 голос
/ 12 апреля 2019

Вот пример , который может вам помочь:

@Echo Off
For %%A In (A B C D) Do WMIC Process Where^
 "Name='Leads Manager.exe' And Not CommandLine Like '%%Account %A%%%'"^
 Get Name 2>Nul|Find "Name">Nul && (
        Start "" "C:\Leads Manager.exe" -- "C:\Account %%A.ini")

В этом примере используется внешний цикл For для выбора букв учетной записи. Поэтому проверяется, выполняется ли Leads Manager.exe с командной строкой, содержащей строку Account A, Account B, Account C или * 1011. * и, если нет, следует запустить Leads Manager, указав путь к соответствующей учетной записи. (Обратите внимание, что оба пути к файлам .exe и .ini содержат пробелы, поэтому я поставил их в двойные кавычки, но оставил оставшуюся часть команды, как вы написали в своем комментарии. Возможно, вы захотите проверить, что Вы указали правильность и откорректируйте ее, если необходимо, перед тестированием, либо полностью замените эту строку простым оператором Echo Is Not Running) || Echo Is Running) или, возможно, вместо этого запустите другой пакетный файл).

...