Bonjour tout le monde !
Note importante : Dorénavant je vous conseil d'ouvrir vos fichier BATCH avec notepad++.
Dans ce cours je vais vous expliquer comment se servir de la commande SETLOCAL ENABLEDELAYEDEXPANSION .
Imaginons un programme simple:
Tester le ! - Code:
-
@ECHO OFF
REM Quelques valeurs :
SET Choix=0
SET valeur1=12
SET valeur2=45
SET valeur3=31
SET valeurAafficher=0
SET /P Choix=Votre choix : (tapez 1, 2 ou 3)
SET /A valeurAafficher=valeur%Choix%
REM si vous avez tapez 1 le programme va voir :
REM SET /A valeurAafficher=valeur1
REM et il va prendre la valeur que contient valeur1.
ECHO.valeur que vous avez choisi : valeur%Choix% et elle contient %valeurAafficher%
PAUSE
Note : Noter que ce programme n'est pas protégé des gens qui entrerai n'importe quoi dans Choix
Maintenant remplacer les valeurs contenu dans valeur1,2 et 3 par des mots :
- Code:
-
@ECHO OFF
REM Quelques valeurs :
SET Choix=0
SET valeur1=Exemple1
SET valeur2=Exemple2
SET valeur3=Exemple3
SET valeurAafficher=0
SET /P Choix=Votre choix : (tapez 1, 2 ou 3)
SET /A valeurAafficher=valeur%Choix%
REM si vous avez tapez 1 le programme va voir :
REM SET /A valeurAafficher=valeur1
REM et il va prendre la valeur que contient valeur1.
ECHO.valeur que vous avez choisi : valeur%Choix% et elle contient %valeurAafficher%
PAUSE
D'aprés ce qu'on a vu tout a l'heure cela devrai m'afficher Exemple1,Exemple1 ou Exemple3.
Mais non !
Il affiche toujours zéro.
Explication:
La première fois les variables contenaient des numéros.
Dans le second teste les variables contiennent de(s) lettre(s)
donc si je rentre 1 dans Choix :
Le programme voit ceci :
SET /A valeurAafficher=valeur%Choix%
puis remplacement de Choix:
SET /A valeurAafficher=valeur1
puis il prend son contenu :
SET /A valeurAafficher=Exemple1
Or le "numéro" Exemple1 n'est pas un numéro, ce sont des lettres,
la variable valeurAafficher est donc mise à zéro.
valeurAafficher=0
Mais comment faire ?!
Tout "simplement" avec la commande SETLOCAL.
fonctionnement :
Je me permet de vous rappeler que les caractères qui servent à lire les variables sont ... les % (pourcent).
Preuve :
- Code:
-
@ECHO OFF
SET valeur=Bonjour
ECHO.%valeur%
PAUSE
La commande SETLOCAL permet de rajouter un caractère de lecture.
Le ! (point d'exclamation)
Et maintenant :
- Code:
-
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
REM Quelques valeurs :
SET Choix=0
SET valeur1=Exemple1
SET valeur2=Exemple2
SET valeur3=Exemple3
SET valeurAafficher=0
SET /P Choix=Votre choix : (tapez 1, 2 ou 3)
ECHO.valeur que vous avez choisi : valeur%Choix% et elle contient !valeur%Choix%!
PAUSE
La commande SETLOCAL ENABLEDELAYEDEXPANSION ne sert pas qu'à faire ceci elle modifie encore d'autre choses mais je n'en parlerai pas dans ce cours.
Quand on écrit :
- Code:
-
SETLOCAL ENABLEDELAYEDEXPANSION
On dit que SETLOCAL est la commande qui reçoit en paramètre ENABLEDELAYEDEXPANSION.
ENABLEDELAYEDEXPANSION est donc un paramètre pour la commande SETLOCAL