我很难实现这个脚本。不知道为什么它只迭代一次,当它"应该"至少3.我在SO上发现了一些类似的问题所以我想我不明白。当满足IF !ERRORLEVEL! equ 0
条件时,它打印并echo
并退出脚本,我的预期行为是再次迭代2次。有人知道原因,可以帮我解决这个问题吗?
set "modules=Module1 Module2 Module3"
SETLOCAL ENABLEDELAYEDEXPANSION
for %%i in (%modules%) do (
set moduleName=%%i
@echo Running !moduleName! module...
set "moduleBootRunName=!moduleName:~6,1!"
call :tolower moduleBootRunName
set "moduleBootRunName=!moduleBootRunName!!moduleName:~7!"
copy NUL > %logsTmpFile%\!moduleName!.txt
start cmd /c "gradlew :modules:!moduleBootRunName!:bootRun --info > %logsTmpFile%\!moduleName!.txt"
:waitForModule
findstr /c:"Started !moduleName!" %logsTmpFile%\!moduleName!.txt > NUL
IF !ERRORLEVEL! equ 0 (
@echo Started !moduleName!
) ELSE (
@echo Waiting for !moduleName!...
timeout /t 5 > NUL
goto waitForModule
)
)
exit /b
:tolower
for %%L IN (a b c d e f g h i j k l m n o p q r s t u v w x y z) DO SET %1=!%1:%%L=%%L!
goto :EOF
答案 0 :(得分:3)
未测试
set "modules=Module1 Module2 Module3"
SETLOCAL ENABLEDELAYEDEXPANSION
for %%i in (%modules%) do (
set moduleName=%%i
@echo Running !moduleName! module...
set "moduleBootRunName=!moduleName:~6,1!"
call :tolower moduleBootRunName
set "moduleBootRunName=!moduleBootRunName!!moduleName:~7!"
copy NUL > %logsTmpFile%\!moduleName!.txt
start cmd /c "gradlew :modules:!moduleBootRunName!:bootRun --info > %logsTmpFile%\!moduleName!.txt"
call :waitForModule
)
exit /b
:tolower
for %%L IN (a b c d e f g h i j k l m n o p q r s t u v w x y z) DO SET %1=!%1:%%L=%%L!
goto :EOF
:waitForModule
findstr /c:"Started !moduleName!" %logsTmpFile%\!moduleName!.txt > NUL
IF !ERRORLEVEL! equ 0 (
@echo Started !moduleName!
) ELSE (
@echo Waiting for !moduleName!...
timeout /t 5 > NUL
goto waitForModule
)