Функции Как и подпрограммы, они эмулируются с помощью команд call, setlocal, endlocal и меток.
Следующий пример демонстрирует возможность определения переменной, в которой сохраняется результат, в строке вызова:
@echo off call :say result=world echo %result% exit /b :say set %1=Hello %2 exit /b Вычисления В bat-файлах можно выполнять простые арифметические операции с целыми 32-битными числами и битами с помощью команды set /a.
Максимальным поддерживаемым числом является 2^31-1 =
2147483647, а минимальным – -(2^31) = -2147483648. Синтаксис напоминает язык программирования Си.
К арифметическим операторам относятся: *, /, %, +, -.
В bat-файле % (остаток целочисленного деления) должен вводиться как ―%%‖. Операторы с двоичными числами интерпретируют число как 32битную последовательность. К ним относятся:
~ (побитовое НЕ или дополнение), & (И), | (ИЛИ), ^ (исключающее ИЛИ), << (сдвиг влево), >> (сдвиг вправо). Логическим оператором отрицания является ! (восклицательный знак). Он изменяет 0 в 1 и ненулевое значение в 0.
Оператором комбинирования служит , (запятая), которая позволяет производить большее число операций в одной команде set.
Комбинированные операторы присваивания += и -= в выражениях a+=b и a-=и соответствуют выражениям a=a+b и a=a-b.
Так же работают и *=, %=, /=, &=, |=, ^=, >>=, <<=.
Приоритет операторов следующий: (); %+-*/; >>, <<; &; ^; |; =, %=, *=, /=, +=, -=, &=, ^=, |=, <<=, >>=; ,
Литералы можно вводить в виде десятичных, шестнадцатеричных (с ведущими 0x) и восьмеричных чисел (с ведущим нулем). Например, set /a n1=0xffff присваивает n1 шестнадцатеричное значение.
Внешние команды