Script por lotes: variables locales en funciones

Las variables locales en las funciones se pueden utilizar para evitar conflictos de nombres y mantener los cambios de variables locales en la función. El comando SETLOCAL se utiliza primero para garantizar que el procesador de comandos realice una copia de seguridad de todas las variables de entorno. Las variables se pueden restaurar llamando al comando ENDLOCAL. Los cambios realizados en el medio son locales para el script por lotes actual. ENDLOCAL se llama automáticamente cuando se llega al final del archivo por lotes, es decir, llamando a GOTO: EOF.

La localización de variables con SETLOCAL permite usar nombres de variables dentro de una función libremente sin preocuparse por conflictos de nombres con variables usadas fuera de la función.

El siguiente ejemplo muestra cómo se pueden utilizar las variables locales en funciones.

Ejemplo

@echo off
set str = Outer
echo %str%
CALL :SetValue str
echo %str%
EXIT /B %ERRORLEVEL%
:SetValue
SETLOCAL
set str = Inner
set "%~1 = %str%"
ENDLOCAL
EXIT /B 0

Salida

En el programa anterior, la variable 'str' se está localizando en la función SetValue. Por lo tanto, aunque el valor de str se devuelve a la función principal, el valor de str en la función principal no será reemplazado por el valor que devuelve la función.

El comando anterior produce la siguiente salida.

Outer
Outer