2013-08-26 1 views
1

Задача состоит в том, чтобы запустить программу (одну и ту же программу) десять раз и вывести для каждого запуска код выхода (возвращаемое значение главной функции). Поэтому я хочу, чтобы запустить пакетный файл (Windows), как это:Как напечатать возвращаемое значение программы в цикле в сценарии пакетного файла?

FOR /l %%x IN (1,1,10) DO (
    AutomatedTest.exe cip.log 
    ECHO %ERRORLEVEL% 
) 

Код выше должен сделать это, если вы думаете, интуитивно, но это не работает, потому что код, который он работает на самом деле:

(
    AutomatedTest.exe cip.log 
    ECHO 0 
) 

и этот кусок выполнен 10 раз.

Любые идеи о том, как заставить его работать? Спасибо!

ответ

2

Что вам нужно запаздывает расширение переменного:

FOR /l %%x IN (1,1,10) DO (
    AutomatedTest.exe cip.log 
    ECHO !ERRORLEVEL! 
) 

Чтобы включить замедленное расширение переменного предшествует вашу партию с SETLOCAL ENABLEDELAYEDEXPANSION или запустить командную оболочку с CMD.EXE /V:ON.

Другой подход использует подпрограммы:

FOR /l %%x IN (1,1,10) DO CALL :Test 
GOTO :EOF 

:Test 
AutomatedTest.exe cip.log 
ECHO %ERRORLEVEL% 
GOTO :EOF 

Еще один подход заключается в использовании IF ERRORLEVEL.