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
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.
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.
Tags command-line windows batch