Script batch - Variabili locali nelle funzioni

Le variabili locali nelle funzioni possono essere utilizzate per evitare conflitti di nome e mantenere le modifiche delle variabili locali alla funzione. Il comando SETLOCAL viene prima utilizzato per garantire che il processore dei comandi esegua un backup di tutte le variabili di ambiente. Le variabili possono essere ripristinate chiamando il comando ENDLOCAL. Le modifiche apportate in mezzo sono locali allo script batch corrente. ENDLOCAL viene chiamato automaticamente quando viene raggiunta la fine del file batch, cioè chiamando GOTO: EOF.

La localizzazione di variabili con SETLOCAL consente di utilizzare liberamente i nomi delle variabili all'interno di una funzione senza preoccuparsi dei conflitti di nome con le variabili utilizzate all'esterno della funzione.

L'esempio seguente mostra come le variabili locali possono essere utilizzate nelle funzioni.

Esempio

@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

Produzione

Nel programma precedente, la variabile "str" ​​viene localizzata nella funzione SetValue. Pertanto, anche se il valore str viene restituito alla funzione main, il valore di str nella funzione main non verrà sostituito dal valore restituito dalla funzione.

Il comando precedente produce il seguente output.

Outer
Outer