A Batch SUBROUTINE - это другой пакетный файл, вызываемый командой CALL:
CALL subroutineName Param1 Param2
Подпрограмма может быть помещена в один и тот же файл кода вызова. На это указывает предшествующее его имени двоеточие:
CALL :SubroutineInThisFile Param1 Param2
. . . .
. . . .
. . . .
EXIT /B
:SubroutineInThisFile
. . .
EXIT /B
:AnotherSubroutine
. . .
EXIT /B
Команда EXIT / B (НЕ просто EXIT) используется для пометки конца подпрограммы в том же файле; это также должно быть сделано для основной программы.
Если другой пакетный файл вызывается без команды CALL, как в вашем примере, чистый результат аналогичен «GOTO to other file»: когда вызванный файл заканчивается, процесс заканчивается в этой точке. Раньше я называл «Наложение» (вместо «подпрограмма») командным файлом, который назывался таким образом.