Функции в бат-файлах

Говорить о создании функции в бат-файле не совсем правильно, все-таки речь идет о батниках. Поэтому правильнее будет говорить об имитации. 
Для имитации функций и обращений к ним в bat-файлах можно воспользоваться такой
командой как call. Синтаксис в короткой форме выглядит следующим образом:
call [:метка [аргументы]]
Данная команда работает стеково (FILO): будучи вызванной первой в очереди вызовов в пакетном файле, извлекается последней. Как пример приведен батник, вычисляющий факториал числа.
________________
@echo off
call :factorial %1
echo %RESULT%
exit /b
rem Функция для подсчета значения факториала
rem Вход:
rem       %1 - Число, для которого необходимо подсчитать факториал
rem Выход:
rem       %RESULT% - Значение факториала
:factorial
if %1 == 0 (
    set RESULT=1
    exit /b
)
if %1 == 1 (
    set RESULT=1
    exit /b
)
set /a PARAM=%1 - 1
call :factorial %PARAM%
set /a RESULT=%1 * %RESULT%
exit /b
________________
На рисунках 1 и 2 рассмотрена работа данного скрипта и представлен подход к имитации понятия функций в butch-файлах.
Рис. 1. Работа батника, вычисляющего факториал числа
Рис. 2. Аналог функции в butch-файле
 При работе с командой call часто всплывает понятие стека (stack).