Explication de l'expansion retardée
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 :
************
Code:
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
) |
n'affichera jamais le message car la variable %VAR% présente dans les deux
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é :roll:
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 :)
Réponse à maxim_um pour l'epansion retardée de l'interpréteur de commande
Merci maxim_um pour ses explications ! Ça se lit comme du petit lait, super bien écrit et clair :ccool: