批处理文件for循环

时间:2012-03-29 00:07:26

标签: batch-file for-loop

我有一个性能运行场景,调用

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运行。

凭借我有限的批次技能,我发现很难做到。

请帮忙

2 个答案:

答案 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)

如果您的名称具有固定模式(例如:operator1operator2等),则可以使用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,因为它简单明了,直截了当。 (它也很灵活,因为它允许您使用任意名称并以任意顺序指定/处理它们。)