Баш за "для" для окон - PullRequest
       2

Баш за "для" для окон

0 голосов
/ 09 июня 2018

Как мне написать этот linux-подобный цикл в командной строке Windows 7?

for docker_path in `ls | grep "docker$"`
do
    cd $docker_path
    mvn -B -f pom.xml clean deploy -Pdocker
    cd ..
done

Мне нужно найти все каталоги * docker /, выполнить команду mvn-exec и вернуться в каталог patern,но для системы Windows7.

1 Ответ

0 голосов
/ 09 июня 2018

В командной строке 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 /?

См. Также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...