В командной строке Windows используйте:
for /D %I in (*docker) do @pushd "%I" & mvn.exe -B -f pom.xml clean deploy -Pdocker & popd
Используйте следующую командную строку, если mvn
не исполняемый файл, а файл * .bat или * .cmd:
for /D %I in (*docker) do @pushd "%I" & call mvn.bat -B -f pom.xml clean deploy -Pdocker & popd
Что ж, в командной строке нет необходимости использовать команду CALL для запуска пакетного файла в цикле вместе с двумя другими командами, как это сделано здесь.
Первая командная строка дляиспользование в пакетном файле:
@for /D %%I in (*docker) do @pushd "%%I" & mvn.exe -B -f pom.xml clean deploy -Pdocker & popd
В пакетном файле на переменную цикла I
следует ссылаться с двумя знаками процента вместо одного, как в командной строке.Переменная цикла может быть только одним символом.
Вторая командная строка для использования в пакетном файле:
for /D %%I in (*docker) do @pushd "%%I" & call mvn.bat -B -f pom.xml clean deploy -Pdocker & popd
В пакетном файле необходимо использовать команду CALL to call другой пакетный файл и продолжите со следующей командой соответственно командной строкой в текущем пакетном файле после завершения выполнения другого пакетного файла.
Командный процессор Windows cmd.exe
продолжает выполнение текущего пакетного файла включенодругой пакетный файл в не использует команду CALL и завершает обработку пакетного файла после завершения выполнения другого командного файла без дальнейшей обработки командных строк в текущем пакетном файле.
См. Ответ на вопрос Как вызвать пакетный файл на один уровень выше текущего каталога? для получения подробной информации о существующих методах запуска пакетного файла из пакетного файла.
ЕдиныйКомандная строка также может быть закодирована несколькими строками:
@echo off
for /D %%I in (*docker) do (
pushd "%%I"
mvn.exe -B -f pom.xml clean deploy -Pdocker
popd
)
И то же решение для многострочного пакетного файла в случае mvn
представляет собой пакетный файл.
@echo off
for /D %%I in (*docker) do (
pushd "%%I"
call mvn.bat -B -f pom.xml clean deploy -Pdocker
popd
)
Команда FOR с опцией /D
выполняет поиск по шаблону с подстановочными знаками *docker
для скрытых каталогов в текущем каталоге, имя каталога которого заканчивается строкой docker
.
Рекомендуется в Windows ссылаться на файл для выполнения с полным именем файла, т.е. именем файла + расширение файла.Это дает понять как для командного процессора Windows, так и для каждого читателя кода, является ли исполняемый файл исполняемым файлом или файлом сценария, что имеет значение, как это можно увидеть здесь.
Для понимания используемых команд икак они работают, откройте окно командной строки, выполните там следующие команды и очень внимательно прочитайте все страницы справки, отображаемые для каждой команды.
call /?
echo /?
for /?
popd /?
pushd /?
См. Также: