Si les extensions de commandes sont activées, SETLOCAL est modifié comme suit : La commande SETLOCAL accepte maintenant un ...

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. Ces
            arguments ont priorité sur les options CMD /E:ON ou /E:OFF.
            Entrez CMD /? pour plus de détails.
        ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
            active ou désactive l'expansion des variables d'environnement.
             Ces arguments ont priorité sur les options CMD
            /V:ON ou /V:OFF. Entrez CMD /? 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.