[Résolu] Sortir d'une boucle For
Modérateur : WIN32-[GG]
-
yoltoorshul
- SuperBatcher
- Messages : 200543
- Enregistré le : 12 janv. 2026 12:55
-
yoltoorshul
- SuperBatcher
- Messages : 200543
- Enregistré le : 12 janv. 2026 12:55
-
yoltoorshul
- SuperBatcher
- Messages : 200543
- Enregistré le : 12 janv. 2026 12:55
Re: [Résolu] Sortir d'une boucle For
Pour ton problème de boucle FOR /F qui perd les variables, c'est le piège classique de l'expansion retardée. Sans `setlocal enabledelayedexpansion`, les variables dans une boucle ne sont pas réévaluées à chaque itération elles restent à leur valeur initiale. La solution : ajouter `setlocal enabledelayedexpansion` en début de script, puis utiliser `!var!` au lieu de `%var%` à l'intérieur de la boucle. Ça force le shell à réévaluer la variable à chaque passage.
Exemple minimal :
```
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1" %%a in (fichier.txt) do (
set "val=%%a"
echo Valeur lue : !val!
)
endlocal
```
Si tu oublies le `!` et que tu mets `%val%`, tu auras toujours la première valeur ou une valeur vide. C'est l'erreur la plus fréquente en batch selon moi.
Exemple minimal :
```
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1" %%a in (fichier.txt) do (
set "val=%%a"
echo Valeur lue : !val!
)
endlocal
```
Si tu oublies le `!` et que tu mets `%val%`, tu auras toujours la première valeur ou une valeur vide. C'est l'erreur la plus fréquente en batch selon moi.