2012-03-29 3 views
1

Ich habe eine Leistung laufen Szenario, dasBatch-Datei für Schleife

cd %AUTORUN_DIR% 
call abc.bat 

cd %AUTORUN_DIR% 
call abc.bat 

cd %AUTORUN_DIR% 
call abc.bat 

nennt dies zur Zeit für einen Operator ausgeführt wird. Jetzt möchte ich diese bearbeiten und diesen Code für 3 Betreiber laufen (Operator1, Operator2, Operator3)

so möchte ich so etwas wie dieses

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 

Ich möchte dies für Operator1, Operator2, Operator3 laufen.

Mit meinen begrenzten Batch-Fähigkeiten, finde ich es schwierig zu tun.

Bitte helfen

Antwort

2

Sie ein Unterprogramm definieren können und den aktuellen Operator in dem Unterprogramm Parameter an es übergeben, und dann definieren die operator Variable mit dem Parameterwert:

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 

Bitte fühlen Sie sich frei zu Stellen Sie eine Frage zu diesem Code.

+0

perfekt !!! Danke. – Barry

1

Wenn Ihre Namen ein festes Muster haben (wie in Ihrem Beispiel: operator1, operator2 etc.), können Sie eine FOR /L Schleife verwenden:

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 
) 

Dennoch, wenn es nur ein paar Namen sind, würde ich wahrscheinlich mit @Aacini's suggestion gehen, da es einfach, klar und unkompliziert ist. (Es ist auch flexibel, weil es Ihnen erlaubt, beliebige Namen zu verwenden und sie in einer beliebigen Reihenfolge zu spezifizieren/zu verarbeiten.)

Verwandte Themen