我想使用三个环境变量设置级别、环境和版本,以便使用不同的lvl、env和ver多次运行测试。我已经有了三个环境变量(数组/列表),我可以从中读取所有要设置的三个值。
我想迭代三个列表,以同时获得lvl、env和ver。我希望它是LVL 1,ENV 1,VER 1的第一次运行,然后LVL 2,ENV 2,VER 2的下一个等等。
我有这些设置在命令窗口,从那里我将启动我的进程
set LVL_VAR=LVL1 LVL2 LVL3
set ENV_VAR=ENV1 ENV2 ENV3
set VER_VAR=VER1 VER2 VER3
我可以读取这三个来获得lvl,env,ver然后我需要在运行RunTest.bat之前将变量LVL,ENV和VER设置为LVL 1,ENV 1和VER 1等等
这就是我尝试的,嵌套循环,但我不知道如何限制第二和第三循环来正确设置它,或者是否有其他方法来做。
@echo OFF
for %%L in (%LVL_VAR%) do call :for_lvl %%L
exit /b
:for_lvl
set LVL=%1
echo LVL %LVL%
for %%E in (%ENV_VAR%) do call :for_env %%E
exit /b
goto :cont
:cont
exit /b
:for_env
set ENV=%1
echo ENV %ENV%
for %%V in (%VER_VAR%) do call :for_ver %%V
goto :cont
:cont
exit /b
exit /b
:for_ver
set VER=%1
echo VER %VER%
echo =======================RunTest.bat===================
exit /b
我得到的明显输出是
LVL LVL1
ENV ENV1
VER VER1
=======================RunTest.bat===================
VER VER2
=======================RunTest.bat===================
VER VER3
=======================RunTest.bat===================
ENV ENV2
VER VER1
=======================RunTest.bat===================
VER VER2
=======================RunTest.bat===================
VER VER3
=======================RunTest.bat===================
ENV ENV3
VER VER1
=======================RunTest.bat===================
VER VER2
=======================RunTest.bat===================
VER VER3
=======================RunTest.bat===================
LVL LVL2
ENV ENV1
VER VER1
=======================RunTest.bat===================
VER VER2
=======================RunTest.bat===================
VER VER3
=======================RunTest.bat===================
ENV ENV2
VER VER1
=======================RunTest.bat===================
VER VER2
=======================RunTest.bat===================
VER VER3
=======================RunTest.bat===================
ENV ENV3
VER VER1
=======================RunTest.bat===================
VER VER2
=======================RunTest.bat===================
VER VER3
=======================RunTest.bat===================
LVL LVL3
ENV ENV1
VER VER1
=======================RunTest.bat===================
VER VER2
=======================RunTest.bat===================
VER VER3
=======================RunTest.bat===================
ENV ENV2
VER VER1
=======================RunTest.bat===================
VER VER2
=======================RunTest.bat===================
VER VER3
=======================RunTest.bat===================
ENV ENV3
VER VER1
=======================RunTest.bat===================
VER VER2
=======================RunTest.bat===================
VER VER3
=======================RunTest.bat===================
我需要这样
LVL LVL1
ENV ENV1
VER VER1
=======================RunTest.bat===================
LVL LVL2
ENV ENV2
VER VER2
=======================RunTest.bat===================
LVL LVL3
ENV ENV3
VER VER3
=======================RunTest.bat===================
我如何限制我的迭代,或者有其他方法吗?
2条答案
按热度按时间igetnqfo1#
你可以通过以下方式将列表转换为数组:
...然后通过下标或索引同时处理三个数组:
我建议你复习一下这个答案
oxalkeyp2#
根据描述的任务的简单解决方案将是:
四个
echo
命令行应替换为call RunTest.bat
。在三个for /F
循环替换四个echo
命令行之后,也可以在此批处理文件中包含RunTest.bat
的代码,甚至可能替换goto :EOF
,以减少运行此批处理文件时的文件系统访问。如果三个环境变量的三个值本身包含空格,如水平制表符或竖线,也可以使用不同的分隔符来代替空格,如下所示:
要了解所使用的命令及其工作方式,请打开command prompt窗口,在那里执行以下命令,并仔细阅读显示的每个命令的帮助页面。
call /?
echo /?
exit /?
for /?
goto /?
set /?
setlocal /?