Со времен первой версии MS-DOS у языка пакетных файлов Microsoft наблюдались два просто поразительных недостатка: невозможность выполнения строковых и численных расчетов и невозможность выдачи запросов на ввод информации. При включенных расширениях команд альтернативные версии команды set помогают в значительной степени избавиться от этих проблем. Выполнение численных расчетов в пакетных файлах Команда set /А Выражение вычисляет строку, воспринимая ее как математическое выражение. Любые имеющиеся в Выражении операторы присваивания заставляют CMD форматировать результат в виде строки и присваивать его поименованной переменной среды окружения. В Выражении используется стандартный математический синтаксис. В следующей таблице перечислены в порядке убывания приоритетности те операторы, которые можно использовать в Выражении.
Для обозначения переменных среды используются любые буквенно-цифро — вые слова. Если используемая в выражении поименованная переменная среды окружения не определена или не содержит число, ее значение принимается за 0. Переменные рассматриваются как десятичные числа, за исключением чисел, начинающихся с 0х, которые рассматриваются как шестнадцатеричные (по основанию 16), и чисел, начинающихся с 0, которые рассматриваются как восьмеричные (по основанию 8). Рассмотрим ряд примеров: set А=з Эти операторы устанавливают значения переменных среды окружения: А получает значение 3, В — биС — 22. Если команда set /А используется в пакетном файле, она выполняется без видимых проявлений, но если набрать ее в командной строке, она выводит последнее вычисленное значение. Например, команда set /А 3+3 выведет результат б, не сохраняя его в какой-нибудь переменной среды окружения. Она превращает командную строку в неплохой и быстрый калькулятор. Строковые вычисления, например удаление расширения из имени файла, реализованы менее понятным образом. Их возможности будут показаны позже, в разделе, посвященном подстановке значений переменных среды окружения.