2012-03-29 7 views
1

У меня есть сценарий запуска производительности, который вызываетпакетный файл для цикла

cd %AUTORUN_DIR% 
call abc.bat 

cd %AUTORUN_DIR% 
call abc.bat 

cd %AUTORUN_DIR% 
call abc.bat 

Это в настоящее время работает для одного оператора. Теперь я хочу, чтобы изменить это и запустить этот код для 3-х операторов (оператор1, оператор2, 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 

Я хочу это бежать за оператор1, оператор2, Operator3.

С моими ограниченными навыками партии, мне трудно это сделать.

Пожалуйста, помогите

ответ

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 

Пожалуйста, не стесняйтесь сделайте любой вопрос об этом коде.

+0

совершенный !!! Спасибо. – Barry

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, так как это просто, ясно и понятно. (Он также является гибким, поскольку позволяет использовать произвольные имена и указывать/обрабатывать их в произвольном порядке.)