Batch : set d'une variable dans un for

Bonjour,

Je m'arrache les cheveux ! Pourquoi ma variable MYVAR n'est-elle pas mise à jour ?
Avec un fichier texte list.txt qui contient plusieurs lignes X:Y où X est le numéro de ligne
et Y une string, j'execute ce batch

set MYVAR=nada
echo "==========================" > out.txt 2>&1
for /f "tokens=1,2 delims=:" %%i in (list.txt) do (

@echo "***************************************************"
@echo "%%i)%%j"
@echo "***************************************************"

echo 1%MYVAR% >> out.txt 2>&1

set MYVAR="-InputNalusReader.url"

echo 2%MYVAR% >> out.txt 2>&1

)

Mon output out.txt ressemble à ça:
"=========================="
1nada
2nada
3nada

tout se passe comme si MYVAR n'était pas mis à jour (je précise que c'est ici une
version simplifiée avec une mise à jour qui ne dépend pas de la ligne courante dans
list.txt, j'en suis arrivée là après simplification car ça ne marchait déjà pas avec une
syntaxe plus compliquée)

3 réponses

  1. Contributeur
    hello
    placer
    setlocal enableDelayedExpansion

    au début du script et utiliser !variable! à la place de %variable% dans la boucle for
    1. echo "==========================" > out.txt 2>&1
      for /f "tokens=1,2 delims=:" %%i in (list_720p50.txt) do (
      set A=%%i
      set B=%%j

      @echo "***************************************************" >> out.txt 2>&1
      @echo "%%i)%%j" >> out.txt 2>&1
      @echo "***************************************************" >> out.txt 2>&1
      @echo "%A%%B%" >> out.txt 2>&1
      )

      me donne
      "=========================="
      "***************************************************"
      "1)ligne1"
      "***************************************************"
      ""
      "***************************************************"
      "2)ligne2"
      "***************************************************"
      ""