Partager à toutes et tous (enfin ceux que ça intéresse) ce que je note sur le net

Aller au contenu | Aller au menu | Aller à la recherche

DOS .bat *fail* echo qui connait pas (de temps à autre) une variable qui a été 'set' - MAJ

J'en perds mon latinDOS.  J'ai dans un joli .bat

echo Changing to "%WEBIDE_JAVA_CLASS_SRC_DIR%"
cd /D "%WEBIDE_JAVA_CLASS_SRC_DIR%"
echo current dir
echo on
cd
  set FILE_TMP=%WEBIDE_JAVA_CLASS_OUT_DIR%\files.txt
echo FILE_TMP %FILE_TMP%
echo FILE_TMP from set
set FILE_TMP

et dans la console j'ai ... (de temps à autre, hein, c'est pas reproductible tout le temps, ça ne serait pas marrant sinon)

Changing to "C:\DEV\...\servlets\webide\src\java"
current dir
C:\DEV\...\servlets\webide\src\java
FILE_TMP
FILE_TMP from set
FILE_TMP=C:\DEV\...\www\build_java\WEB-INF\classes\files.txt

Note: le chemin, fichier etc C:\DEV\...\www\build_java\WEB-INF\classes\files.txt existe bien sur le disque ;)

Comment cette foutue variable peut être connue de "set" et pas de "echo" ???

MAJ: trouvé je pense ... ce bon vieux DOS a des limitations depuis le début: dans un .bat les variables sont maj/créées lors du lancement/interprétation du .bat.  Et si on change la valeur en plein milieu, ben *paf le chien*.
Cad qu'au final tous les %XXXX% sont remplacés par leur valeur. Et là le pb c'est que le set FILE_TMP=%WEBIDE_JAVA_CLASS_OUT_DIR%\files.txt était fait loinnnnnnnn derrière les autres, et en plus dans in if ce qui semble être aussi problématique.

Un chouette openclassroom qui en parle (je n'ai pas utilisé la méthode setlocal enableDelayedExpansion et les !XXXX! qui vont avec, mais juste déplacé le set tout en haut).

Là: Automatisez vos tâches avec Batch

Note pour plus tard: ne pas oublier, à force de switcher entre les langages/batchs/... les limitations des uns et des autres ;)