Запуск всех командных файлов в заданном каталоге

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

@echo off 
 for /R %%x in (*.bat) do ( 
 call "%%x" 
)
pause

2 ответа

Решение

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

Либо поместите этот сценарий на один уровень выше, перейдите в каталог файлов bat и перейдите в него ..\yourscript.bat

Или вы можете отфильтровать текущий скрипт в вашем цикле:

@echo off 
 for /R %%x in (*.bat) do (
 if not "%%x" == "%~0" call "%%x" 
)

Это происходит потому, что вы запускаете пакет в той же папке, что и все другие пакетные файлы, перемещаете этот пакет в другую папку и настраиваете (*.bat) путь к (other_folder\*.bat), Другой способ - проверить, совпадает ли пакет с выполняемым, и пропустить этот.

Другие вопросы по тегам