Выход из цикла через несколько циклов, даже если это не так - PullRequest
0 голосов
/ 14 марта 2019

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

Этот цикл должен проверять, является ли каталог пустым, а если нет, ждать 60 секунд, а затем повторять цикл.

for /F %%f in ('dir /A "C:\Test\*.*"') do (
    echo Waiting on uninstall to complete...
    timeout 60
)

Я создал тестовый каталог, заполнив его документом Word, но я заметил, что он будет циклически повторяться 5-10 раз, а затем выйдет из цикла до конца программы.

Всё помогает

1 Ответ

3 голосов
/ 14 марта 2019

Ваш пример делает 60-секундную паузу для каждого файла в папке, как упомянуто @Squashman в комментариях.Если вы просто хотите проверить, является ли каталог файлов / не пустым, и повторять до тех пор, пока он не станет пустым, то это может помочь.Просто проверьте количество файлов, и если число файлов не равно 0, перезапустите цикл, это будет продолжаться до тех пор, пока число файлов не достигнет 0.

@echo off
:start
for /f %%i in ('dir ^| findstr "File(s)"') do (
    if not "%%~i"=="0" (
        echo %%~i files remaining.. Waiting on uninstall to complete...
        timeout 60
        goto :start
    ) else (
        echo uninstall completed... %%~i files remaining
  ) 
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...