Script Batch - Variables locales dans les fonctions

Les variables locales dans les fonctions peuvent être utilisées pour éviter les conflits de noms et conserver les modifications de variables locales à la fonction. La commande SETLOCAL est d'abord utilisée pour garantir que le processeur de commande effectue une sauvegarde de toutes les variables d'environnement. Les variables peuvent être restaurées en appelant la commande ENDLOCAL. Les modifications apportées entre les deux sont locales au script de traitement par lots actuel. ENDLOCAL est automatiquement appelé lorsque la fin du fichier batch est atteinte, c'est-à-dire en appelant GOTO: EOF.

La localisation de variables avec SETLOCAL permet d'utiliser librement les noms de variables dans une fonction sans se soucier des conflits de noms avec les variables utilisées en dehors de la fonction.

L'exemple suivant montre comment les variables locales peuvent être utilisées dans les fonctions.

Exemple

@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

Production

Dans le programme ci-dessus, la variable 'str' est localisée dans la fonction SetValue. Ainsi, même si la valeur str est renvoyée à la fonction principale, la valeur de str dans la fonction principale ne sera pas remplacée par la valeur renvoyée par la fonction.

La commande ci-dessus produit la sortie suivante.

Outer
Outer