Script em lote - Variáveis ​​locais em funções

Variáveis ​​locais em funções podem ser usadas para evitar conflitos de nome e manter mudanças de variáveis ​​locais para a função. O comando SETLOCAL é usado primeiro para garantir que o processador do comando faça um backup de todas as variáveis ​​de ambiente. As variáveis ​​podem ser restauradas chamando o comando ENDLOCAL. As alterações feitas no meio são locais para o script de lote atual. ENDLOCAL é chamado automaticamente quando o final do arquivo em lote é alcançado, ou seja, chamando GOTO: EOF.

A localização de variáveis ​​com SETLOCAL permite usar nomes de variáveis ​​dentro de uma função livremente, sem se preocupar com conflitos de nome com variáveis ​​usadas fora da função.

O exemplo a seguir mostra como as variáveis ​​locais podem ser usadas em funções.

Exemplo

@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

Resultado

No programa acima, a variável 'str' está sendo localizada na função SetValue. Assim, mesmo que o valor str esteja sendo retornado para a função principal, o valor de str na função principal não será substituído pelo valor que está sendo retornado da função.

O comando acima produz a seguinte saída.

Outer
Outer