Пакетный выход из цикла после определенного числа циклов
Я ищу, чтобы выйти из цикла с определенным числом циклов (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
2 ответа
Вот что я сделал и, кажется, работает нормально.
::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
Вы можете воспользоваться командой "start" для запуска деинсталлятора в другом процессе. Кроме того, вы можете воспользоваться дополнительным параметром "/WAIT", который позволит пакету дождаться завершения процесса. Вам может не понадобиться цикл в конце концов.
т.е. start /WAIT "C:\Program Files\App Name\uninstall.exe"