2016-03-24 11 views
0

Я ищу выход из моей петли на определенное количество циклов (10 - циклы). Я просмотрел несколько вещей в Google, но цикл должен был сделать что-то еще, поэтому я немного потерялся.Пакет завершения цикла после определенного числа циклов

Вот мой основной сценарий цикла, и я надеюсь, что один из вас может воспитывать меня и указывать на меня в правильном направлении. Если вам интересно, что я делаю так, вот почему, и если у вас есть лучший вариант, пожалуйста, дайте мне знать. Я довольно новичок в этом пакетном сценарии, и я открыт для предложений.

Этот Uninstaller.exe не приостанавливает пакетный скрипт. Поэтому я в основном ищу Uninstaller.exe, который будет удален после завершения процесса Uninstaller.exe. Поэтому, как только цикл обнаружит удаление исполняемого файла, он выйдет из цикла и перейдет к следующему действию в скрипте.

У меня было несколько раз, когда uninstaller.exe разбился, прежде чем он закончился, и удалил сам себя, и не удалось продолжить командный файл. Поэтому я решил, что было бы лучше всего, чтобы цикл был установлен на определенное количество раз перед выходом.

:: Uninstall App 
"C:\Program Files\App Name\uninstall.exe" -quiet 

::Validates the uninstall 
SET LookForUninstaller="C:\Program Files\App Name\uninstall.exe" 

:CheckForUninstaller 
IF NOT EXIST %LookForUninstaller% GOTO ExitLoop 

TIMEOUT /T 5 >nul 

GOTO CheckForUninstaller 

:ExitLoop 
+0

Хорошей отправной точкой является 'set/A', который способен выполнять числовые операции, такие как увеличение счетчика; оператор 'if' может затем использоваться для проверки текущего значения счетчика и условно пропускать команду' goto'; введите 'set /?' и 'if /?' в новое окно командной строки для получения дополнительной помощи по этим командам ... – aschipfl

ответ

0

Вы можете воспользоваться командой «начать», чтобы запустить деинсталлятор в другом процессе. И вы также можете воспользоваться опцией «/ WAIT», которая позволит партии ждать, пока процесс завершится, чтобы продолжить. Вам может не понадобиться цикл в конце концов.

т.е. start /WAIT "C:\Program Files\App Name\uninstall.exe"

+0

У меня есть другой исполняемый файл, который вызывается, как вы упомянули выше. К сожалению, этот «uninstaller.exe» не приостанавливает пакетный скрипт. – Bill

+0

это непросто, так как нет способа воспроизвести, удачи в вашем поиске. Подождите, если вы удалите опцию «-quiet» – user4080820

0

Вот что я сделал, и, кажется, работает нормально.

::Set Uninstaller Variable 
SET AppToUninstall="C:\Program Files\App Name\uninstall.exe" 

:: Uninstall App 
"%AppToUninstall%" -quiet 

::Loops for 12 times in 10 second intervals (Total 120 seconds) to confirm deletion. Loop will exit after 12 loops and move on if uninstaller is not deleted. 
for /l %%i in (1,1,12) do (
TIMEOUT /T 10 >nul 
IF NOT EXIST %AppToUninstall% GOTO ExitLoop 
) 
:ExitLoop