windows - for循环只执行一次
问题描述
我很难实现这个脚本。不知道为什么它只迭代一次,当它“应该”至少 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
解决方案
未经测试
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
)
推荐阅读
- pine-script - Pine Script:帮我编写这项研究和策略的代码(EMA Crossover)
- google-analytics - 使用 AdSense/AdMob,我可以跟踪哪个视频赚了多少钱?
- javascript - 如何将提示条目添加到对象并在另一个提示中回调?
- php - 使用 Woocommerce 上的 URL 为不止一种产品定制价格
- wordpress - 是否可以使用不同名称的同一张图片而不复制它?
- github - Github push origin master 和 Token 认证
- http - Jmeter HTTP 连接和断开连接
- python - 如何将修补后的图像加载到 Dataloader 以供神经网络使用
- javascript - 如何使用角度访问保存在标头中的令牌
- pip - ubuntu16.04 pip3 升级后坏了