Bonjour à tous,
je suis en train de m'initier à la programmation de batch windows, et en parcourant les tutoriels, je suis tombé plusieurs fois sur la problématique de l'expansion retardée, qui m'a l'air importante.
A chaque fois, l'exemple et les explications données sont les mêmes :
************
n'affichera jamais le message car la variable %VAR% présente dans les deux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 set VAR=avant if "%VAR%" == "avant" ( set VAR=après if "%VAR%" == "après" @echo Cela marche si vous lisez ce message )
instances de IF est remplacée à la lecture de la première instance de IF,
étant
donné que le corps de IF, instruction composée, est logiquement inclus. Donc
le
IF compris dans l'instance compare "avant" avec "après" et il n'y aura
jamais
égalité.
************
ce qui correspond à l'aide standard de la commande "set" me semble-t-il...
Cependant je ne comprends pas cette explication, et je ne comprends pas pourquoi sans expansion retardée, le message n'est pas affiché
Intuitivement ca a l'air correct, et si j'écris l'équivalent dans d'autres langages, ca passera très bien. Quelle est la différence ?
Merci
Partager