2016-06-27 14 views
0

Так в настоящее время я использую:Проверка на несколько разных ехе бежит с командным файлом

:METFEXTLOOP1 
tasklist | find /i "Full_Index_Update.exe" >nul 2>&1 
IF ERRORLEVEL 1 (
GOTO METFEXTLOOP2 
) ELSE (
ECHO The Full Index Update is Running... 
ping localhost -n 3 >nul 
cls 
GOTO METFEXTLOOP1 
) 
::Verify Early Index Update Is not Running 
:METFEXTLOOP2 
tasklist | find /i "Early_Index_Update.exe" >nul 2>&1 
IF ERRORLEVEL 1 (
GOTO METFEXTLOOP3 
) ELSE (
ECHO The Early Index Update is Running... 
ping localhost -n 3 >nul 
cls 
GOTO METFEXTLOOP2 
) 
::Verify Morningstar US Mutual Funds Extended is not Running 
:METFEXTLOOP3 
tasklist | find /i "MstarExt.exe" >nul 2>&1 
IF ERRORLEVEL 1 (
GOTO METFEXTLOOP4 
) ELSE (
ECHO The Morningstar US Mutual Funds Extended Update is Running... 
ping localhost -n 3 >nul 
cls 
GOTO METFEXTLOOP3 
) 
:METFEXTLOOP4 
ECHO Hello World 
pause 

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

@ECHO OFF 
    :FullLOOP 
     tasklist | find /i "SA_8.5_Setup.exe" >nul 2>&1 
     IF ERRORLEVEL 1 (
      tasklist | find /i "Early Index.exe" >nul 2>&1 
      IF ERRORLEVEL 1 (
       tasklist | find /i "MorningstarUSMutualFundsBasic.exe" >nul 2>&1 
       IF ERRORLEVEL 1 (
        tasklist | find /i "MorningstarUSMoneyMarketFundsBasic.exe" >nul 2>&1 
        IF ERRORLEVEL 1 (
         tasklist | find /i "MorningstarETFBasic.exe" >nul 2>&1 
         IF ERRORLEVEL 1 (
          tasklist | find /i "MorningstarUSMutualFundsExtended.exe" >nul 2>&1 
          IF ERRORLEVEL 1 (
           tasklist | find /i "LipperUSMutualFundsExtended.exee" >nul 2>&1 
           IF ERRORLEVEL 1 (
            tasklist | find /i "LipperUSMutualFundsBasic.exe" >nul 2>&1 
            IF ERRORLEVEL 1 (
             tasklist | find /i "LipperUSMutualFundsBasic.exe" >nul 2>&1 
             IF ERRORLEVEL 1 (
              tasklist | find /i "PSNExtended.exe" >nul 2>&1 
              IF ERRORLEVEL 1 (
               tasklist | find /i "PSNBasic.exe" >nul 2>&1 
               GOTO Proceed 
      ) ELSE (
        ECHO Another installer is running.... 
        ping localhost -n 3 >nul 
        cls 
        GOTO FullLOOP 
        ) 
    :Proceed 
    cls 
    ECHO Hello World 
    pause 

Однако это происходит практически сразу. Есть ли «обманывающий» способ сделать это? Или мне нужно сделать несколько циклов, чтобы выполнить эти проверки. Это, наверное, глупая и очевидная ошибка с моей стороны. Однако любая помощь с этим была бы очень желанной и приветствуемой.

ответ

0

Надеюсь, это поможет.

@echo off 
 
:FullLOOP 
 
tasklist /FI "IMAGENAME eq SA_8.5_Setup.exe" 2>NUL | find /I /N "SA_8.5_Setup.exe">NUL 
 
if "%ERRORLEVEL%"=="1" (tasklist /FI "IMAGENAME eq Early Index.exe" 2>NUL | find /I /N "Early Index.exe">NUL 
 
if "%ERRORLEVEL%"=="1" (tasklist /FI "IMAGENAME eq MorningstarUSMutualFundsBasic.exe" 2>NUL | find /I /N "Early MorningstarUSMutualFundsBasic.exe">NUL 
 
if "%ERRORLEVEL%"=="1" (tasklist /FI "IMAGENAME eq MorningstarUSMutualFundsBasic.exe" 2>NUL | find /I /N "MorningstarUSMutualFundsBasic.exe">NUL 
 
if "%ERRORLEVEL%"=="1" (tasklist /FI "IMAGENAME eq MorningstarUSMoneyMarketFundsBasic.exe" 2>NUL | find /I /N "MorningstarUSMoneyMarketFundsBasic.exe">NUL 
 
if "%ERRORLEVEL%"=="1" (tasklist /FI "IMAGENAME eq MorningstarETFBasic.exe" 2>NUL | find /I /N "MorningstarETFBasic.exe">NUL 
 
if "%ERRORLEVEL%"=="1" (tasklist /FI "IMAGENAME eq MorningstarUSMutualFundsExtended.exe" 2>NUL | find /I /N "MorningstarUSMutualFundsExtended.exe">NUL 
 
if "%ERRORLEVEL%"=="1" (tasklist /FI "IMAGENAME eq LipperUSMutualFundsExtended.exe" 2>NUL | find /I /N "LipperUSMutualFundsExtended.exee">NUL 
 
if "%ERRORLEVEL%"=="1" (tasklist /FI "IMAGENAME eq LipperUSMutualFundsBasic.exe" 2>NUL | find /I /N "LipperUSMutualFundsBasic.exe">NUL 
 
if "%ERRORLEVEL%"=="1" (tasklist /FI "IMAGENAME eq PSNExtended.exe" 2>NUL | find /I /N "PSNExtended.exe">NUL 
 
if "%ERRORLEVEL%"=="1" ( 
 
tasklist /FI "IMAGENAME eq PSNBasic.exe" 2>NUL | find /I /N "PSNBasic.exe">NUL 
 
GOTO Proceed 
 
)))))))))) else (
 
        ECHO Another installer is running.... 
 
        ping localhost -n 3 >nul 
 
\t \t  cls 
 
        GOTO FullLOOP 
 
        ) 
 
pause 
 
    :Proceed 
 
    cls 
 
    ECHO Hello World 
 
    pause

+0

Спасибо за ответ, но это не похоже на работу. Он не проверяет постоянно или не выглядит так. Он либо застрянет на «Другой установщик работает ...», либо «Hello World» (продолжение установки дополнительных элементов). Я должен сказать, но это намного более симпатичная петля, чем моя длинная цепочка из них. Я занимаюсь этим и не могу заставить его работать. Есть ли способ проверить список задач, если% this% или%,% или% other% = 1, затем повторите проверку еще раз. – Pyrometheous