La commande : "SETLOCAL" est activé Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. disponible
Les exemples pour la commande "SETLOCAL"
Le
`SETLOCAL`La commande dans l'invite de commande Windows est utilisée pour définir des variables d'environnement localement dans un fichier de commandes. Voici quelques exemples d'utilisation
`SETLOCAL`:
Exemple 1 : Définir une variable d'environnement locale :
@ECHO OFF
SETLOCAL
SET LOCALE_VARIABLE=Contenu
ECHO %LOCALE_VARIABLE%
Description : Dans cet exemple, la variable d'environnement
`LOCALE_VARIABLE`dans la zone localement limitée (à travers
`SETLOCAL`et
`ENDLOCAL`) et ne peut être utilisé que dans cette plage.
Exemple 2 : Réinitialisation à l'état précédent :
@ECHO OFF
SET GLOBALE_VARIABLE=Contenu_global
SETLOCAL
SET LOCALE_VARIABLE=Contenu local
ECHO Locale Variable: %LOCALE_VARIABLE%
ECHO Globale Variable: %GLOBALE_VARIABLE%
ENDLOCAL
ECHO Locale Variable (en dehors de la zone localement limitée): %LOCALE_VARIABLE%
Description : Il s'agit de la variable d'environnement locale
`LOCALE_VARIABLE`défini et utilisé dans la zone localement limitée. Après
`ENDLOCAL`le script revient à l'état précédent et la variable locale n'est plus disponible en dehors de la portée locale.
Exemple 3 : Imbrication de SETLOCAL :
@ECHO OFF
SETLOCAL
SET VARIABLE1=Valeur1
ECHO Zone intérieure: %VARIABLE1%
SETLOCAL
SET VARIABLE2=Valeur2
ECHO Zone externe: %VARIABLE1%, %VARIABLE2%
ENDLOCAL
ECHO En dehors de la zone locale: %VARIABLE1%, %VARIABLE2%
Description : C'est ici que le
`SETLOCAL`-Commande imbriquée deux fois. La variable
`VARIABLE2`n'est visible que dans la zone localisée intérieure, tandis que
`VARIABLE1`est visible dans les zones externes et internes.
Exemple 4 : Activation du traitement avancé des variables d'environnement :
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=Contenu
ECHO Avant Retardé Expansion: %VARIABLE%
SET VARIABLE=Nouveau contenu
ECHO Après retard Expansion: !VARIABLE!
Description : En utilisant
`ENABLEDELAYEDEXPANSION`les variables d'environnement peuvent-elles être marquées d'un point d'exclamation
`!`au lieu de signes de pourcentage
`%`être utilisé pour une expansion retardée.
Le
`SETLOCAL`L'environnement permet de définir localement des variables pour un fichier batch, les modifications s'appliquant uniquement à une zone limitée et non globalement à l'ensemble du script. Ceci est particulièrement utile si vous souhaitez que les modifications apportées aux variables d'environnement soient limitées à une section spécifique du script.
"SETLOCAL" Extrait de l'aide de Microsoft Windows
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\WINDOWS>
Commence la localisation des modifications de l'environnement dans un fichier
de commandes. Les modifications d'environnement effectués après SETLOCAL sont
locaux au fichier de commandes. Lorsque la fin du fichier de commandes est
atteinte, ENDLOCAL est exécuté pour toutes les commandes SETLOCAL émises
par le fichier de commandes.
SETLOCAL
Si les extensions de commandes sont activées, SETLOCAL est modifié comme suit :
La commande SETLOCAL accepte maintenant un argument optionnel :
ENABLEEXTENSIONS / DISABLEEXTENSIONS
active ou désactive les extensions de commandes. Entrez
CMD /? pour plus de détails.
ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
active ou désactive l'expansion des variables d'environnement
retardées. Entrez SET /? pour plus de détails.
Ces modifications sont actives jusqu'à l'exécution de la commande ENDLOCAL correspondante,
sans tenir compte de leur état avant l'instruction SETLOCAL.
La commande SETLOCAL fixera la valeur ERRORLEVEL si elle reçoit
un argument. Ce sera zéro si un des deux arguments valides est donné, et
1 sinon. Vous pouvez vous en servir dans les fichiers de commandes pour
déterminer si les extensions sont disponibles, en utilisant la technique
suivante :
VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo Impossible d'activer les extensions
Cela marche, car sur les anciennes versions de CMD.EXE, SETLOCAL NE fixe PAS
la valeur de ERRORLEVEL. La commande VERIFY avec un argument non valide
initialise ERRORLEVEL à une valeur non nulle.
Informations importantes, conseils pour la commande "SETLOCAL"
Oui, il y a certains aspects importants à considérer lorsque vous
`SETLOCAL`commande dans l'invite de commande Windows ou dans des scripts batch :
1.
Portée limitée : `SETLOCAL`crée une portée limitée pour les variables d'environnement. Les modifications apportées aux variables d'environnement dans cette étendue n'affectent pas l'environnement global ou les autres étendues localisées. Noter que
`SETLOCAL`et
`ENDLOCAL`doivent être utilisés par paires.
SETLOCAL
REM ... Ici, les modifications apportées aux variables d'environnement sont locales
ENDLOCAL
2.
Imbrication : Vous pouvez
`SETLOCAL`imbriquer pour créer plusieurs zones localisées. Tout le monde
`SETLOCAL`mais devrait être avec un approprié
`ENDLOCAL`être résilié.
SETLOCAL
REM Zone localisée intérieure
SETLOCAL
REM Zone localisée encore plus profonde
ENDLOCAL
ENDLOCAL
3.
Expansion retardée : Vous pouvez avec
`SETLOCAL ENABLEDELAYEDEXPANSION`activer l'expansion retardée. La variable est incluse
`!`au lieu de
`%`enfermé. L'expansion paresseuse permet d'évaluer les variables au moment de l'exécution, pas seulement lors de la lecture du fichier batch.
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=Contenu
ECHO Avant Retardé Expansion: %VARIABLE%
SET VARIABLE=Nouveau contenu
ECHO Après retard Expansion: !VARIABLE!
ENDLOCAL
4.
Variables d'environnement globales : Modifications apportées aux variables d'environnement qui se trouvent dans un
`SETLOCAL`-scope n'affecte pas les variables d'environnement globales en dehors de la portée.
SET GLOBAL=Contenu_global
SETLOCAL
SET GLOBAL=Contenu local
ECHO Dans la zone localement limitée: %GLOBAL%
ENDLOCAL
ECHO En dehors de la zone locale: %GLOBAL%
5.
Annulation des modifications : Si vous souhaitez annuler les modifications dans une zone localisée, revenez simplement à l'état précédent.
`SETLOCAL`de retour près de toi
`ENDLOCAL`utiliser.
SETLOCAL
REM Changements ici
ENDLOCAL
REM Annuler les modifications
C'est important,
`SETLOCAL`et
`ENDLOCAL`à utiliser avec précaution et par paires pour garantir que les variables d'environnement sont correctement limitées et ont les effets attendus.