Как выполнить пакетную команду окон рекурсивно?

Например, у Вас есть переименовать команда в пакетном файле, и Вы хотите выполнить тот файл на текущем каталоге и всех подкаталогах.

9
задан Bill the Lizard 4 February 2010 в 19:17
поделиться

1 ответ

Предположим, ваша партия называется что-то вроде myriname.cmd Затем вы можете легко сделать следующее:

call myrename.cmd
for /r /d %%x in (*) do (
    pushd "%%x"
    call myrename.cmd
    popd
)

Первая строка будет запустить ее для текущего каталога, цикл для будет реюррительно ( / R ) по всем каталогам ( / D ) и выполните часть в скобках. То, что мы делаем внутри них, изменяют каталог на тот, который в настоящее время в настоящее время итерации с Pushd - что имеет приятное свойство, которое вы можете отменить этот каталог с POPD Запустите команду, которая затем будет запущена в каталоге, к которому мы просто переключились.

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

"%~dp0myrename.cmd"
16
ответ дан 4 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: