我有一个性能运行场景,调用
cd %AUTORUN_DIR%
call abc.bat
cd %AUTORUN_DIR%
call abc.bat
cd %AUTORUN_DIR%
call abc.bat
目前针对一个运营商运行。现在我想编辑它并为3个运算符(Operator1,Operator2,Operator3)运行此代码
所以我想要这样的东西
set j = 1;
set operator = "Operator"%j% (Expecting this to be Operator1 in the first run of the loop)
for operator in ("Operator1","Operator2","Operator3") do
cd %AUTORUN_DIR%
call abc.bat
cd %AUTORUN_DIR%
call abc.bat
cd %AUTORUN_DIR%
call abc.bat
我想让它为Operator1,Operator2,Operator3运行。
凭借我有限的批次技能,我发现很难做到。
请帮忙
答案 0 :(得分:2)
您可以定义子例程并将子例程参数中的当前运算符传递给它,然后使用参数值定义operator
变量:
for %%o in ("Operator1","Operator2","Operator3") do call :theProcess %%o
goto :EOF
:theProcess
rem For example:
echo Current operator is: %1
set operator=%1
cd %AUTORUN_DIR%
call abc.bat
cd %AUTORUN_DIR%
call abc.bat
cd %AUTORUN_DIR%
call abc.bat
exit /B
请随意对此代码提出任何问题。
答案 1 :(得分:1)
如果您的名称具有固定模式(例如:operator1
,operator2
等),则可以使用FOR /L
循环:
FOR /L %%o IN (1,1,3) DO (
SET operator=operator%%o
cd %AUTORUN_DIR%
call abc.bat
cd %AUTORUN_DIR%
call abc.bat
cd %AUTORUN_DIR%
call abc.bat
)
但是,当只有几个名字时,我可能会选择@Aacini's suggestion,因为它简单明了,直截了当。 (它也很灵活,因为它允许您使用任意名称并以任意顺序指定/处理它们。)