O comando em lote após o loop não é executado

3

Eu tenho o seguinte arquivo em lotes:

:RELEASE
for /d %%i in (D:\Projekte\UDG\OSB-Projekte\*) do (
::cd "%%i" & mvn versions:use-latest-versions -Dincludes=de.db.udg.test-framework:component-tester & mvn clean test >> %back%/test.log
)
goto MAKEDECISION
:MAKEDECISION
set /p decision=Do you want to commit?[[c]ommit/[r]evert/[e]xit]

no entanto, o cmd fecha imediatamente após o loop.

    
por 0x45 26.03.2018 / 16:15

2 respostas

2

Eu tive que usar o comando call para mvn - > cd "%%i" & call mvn versions:use-latest-versions -Dincludes=de.db.udg.test-framework:component-tester & call mvn clean test >> %back%/test.log

    
por 26.03.2018 / 17:09
1

Este exemplo está usando o comando mvn . Este não é realmente um programa executável, é na verdade outro arquivo de lote chamado mvn.bat (provavelmente você pode procurá-lo no %PATH% do seu sistema).

Se dentro do loop for , ou fora do loop, o problema será o mesmo: fazendo referência a um arquivo em lote, o controle é transferido para esse arquivo em lote e o atual será interrompido.

Como 0x45 anotou em sua própria resposta , usando call executará o subcomando e, em seguida, retornará o controle para o processo pai, conforme esperado.

    
por 26.03.2018 / 18:22