Рассмотрим два пакетных файла, a.bat
и b.bat
.Пакетный файл a.bat
вызывает b.bat
, а также вызывает локальную подпрограмму :c
.
@echo off
rem -------------
rem This is a.bat
rem -------------
echo Outer A=%A%
setlocal
set A=Value_A
echo Local A=%A%
echo Calling b.bat
call b.bat
echo Back from b.bat
echo A=%A%
echo Calling subroutine :c
call :c
echo Back from subroutine :c
echo A=%A%
exit /b
:c
setlocal
set A=Value_C
echo Inside subroutine :c A=%A%
exit /b
@echo off
rem -------------
rem This is b.bat
rem -------------
setlocal
set A=Value_B
echo Inside b.bat A=%A%
Запуск a.bat
создает:
C> a.bat
Outer A=
Local A=Value_A
Calling b.bat
Inside b.bat A=Value_B
Back from b.bat
A=Value_A
Calling subroutine :c
Inside subroutine :c A=Value_C
Back from subroutine :c
A=Value_A
Обратите внимание, что endlocal
в поле зрения нет.