===Windows===

Примеры скриптов. Уберите пробелы внутри "% %"! Скрипты записывать в файл с расширением *.cmd.

Файлы с тестами называются 01, 02, 03, ... . Файлы с правильными ответами называются 01.a, 02.a, 03.a.

Запускаемая программа: ..\a.exe. Имена входных-выходных файлов sum.in-sum.out.

**Запустить программу на всех тестах, вывести на экран результат работы программы и правильный ответ**
%%
echo off
for % %f in (??) do echo TEST % %f & echo TEST % %f & copy % %f sum.in > nul & ..\a.exe & echo Output: & type sum.out & echo Correct: & type % %f.a
%%

**Запустить программу на всех тестах, сравнить ответ с правильным при помощи команды fc, остановиться на первом тесте с неправильным ответом**
%%
echo off
for % %f in (??) do echo TEST % %f & copy % %f sum.in > nul & ..\a.exe & fc /w % %f.a sum.out & if errorlevel 1 exit
%%

**Запустить программу на всех тестах, сравнить ответ с правильным при помощи check.exe, остановиться на первом тесте с неправильным ответом**
%%
echo off
for % %f in (??) do echo TEST % %f & copy % %f sum.in > nul & ..\a.exe & check.exe sum.in sum.out % %f.a & if errorlevel 2 exit
%%


**Пример чекера**

Чекер запускается из командной строки с тремя параметрами. Первый параметр - имя файла с входными данными, второй - имя файла с выводом программы, третий - имя файла с правильным ответом. Чекер возвращает 0, если ответ правильный, 2 - если ответ неправильный.

%%
#include <iostream>
#include <fstream>

using namespace std;

int main(int narg, char ** argv)
{
    if (narg != 4)
    {
        cerr << "You must specify 3 args" << endl;
        return 1;
    }
    ifstream input(argv[1]);
    ifstream output(argv[2]);
    ifstream correct(argv[3]);
    int user_ans, correct_ans;
    output >> user_ans;
    correct >> correct_ans;
    if (user_ans == correct_ans)
    {
        cout << "OK" << endl;
        return 0;
    }
    else
    {
        cout << "WA" << endl;
        return 2;
    }
}
%%


----
адрес оригинала: ((/Информатика/Олимпиады/СкриптыАвтоматическогоТестирования))