循环后的批处理命令未执行

循环后的批处理命令未执行

我有以下批处理文件:

: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]

然而循环结束后 cmd 立即关闭。

答案1

我必须使用call命令mvn->cd "%%i" & call mvn versions:use-latest-versions -Dincludes=de.db.udg.test-framework:component-tester & call mvn clean test >> %back%/test.log

答案2

此示例使用mvn命令。这实际上不是一个可执行程序,它实际上是另一个批处理文件,名为mvn.bat(您可能可以在系统的 中搜索它%PATH%)。

无论是在for循环内还是在循环外,问题都是相同的:通过引用批处理文件,控制权将移交给该批处理文件,并且当前批处理文件将停止。

作为0x45已注意到在他们自己的回答中,使用call将运行子命令,然后将控制权返回给父进程,正如预期的那样。

相关内容