[Batch] Modifier 1 variable d'environnement en cours d'éxécution

Modifier 1 variable d'environnement en cours d'éxécution [Batch] - Shell/Batch - Programmation

Marsh Posté le 21-02-2006 à 16:29:27    

J'aimerais utiliser 1 commande de ce style
 

Code :
  1. IF %client%==1 THEN set client=darkness ELSE (IF THEN %client%==2 set client=catacombs ELSE set client=atlantis)


 
sachant que l'utilisteur entre 1, 2 ou 3 dans %client% en début de batch.
Le "set" ne modifie pas la valeur de la variable dans la condition, je me retrouve avec 1, 2 ou 3 en fin de batch quand meme.
 
j'ai essayé de mettre une deuxieme variable d'environnement dans la condition sans résultat non plus.
 
Quelqu"un pourrait me donner 1 petit coup de pouce svp ? ^^

Reply

Marsh Posté le 21-02-2006 à 16:29:27   

Reply

Marsh Posté le 21-02-2006 à 16:50:29    

- est-ce que tu utilises
setlocal
et
endlocal
 
- comment tu appelles ton batch ? Si c'est en doubliquant dessus, bien sûr que ça ne peut pas marcher : la modif n'est effective que pour le shell en cours.
 
A part ça, il faut revoir la syntaxe du if, ça ne risque pas de marcher comme tu fais là actuellement.
if /?

Reply

Marsh Posté le 21-02-2006 à 17:31:43    

IF %client%==1 THEN set client=darkness ELSE (IF %client%==2 THEN set client=catacombs ELSE set client=atlantis)
 
c'est mieux mais ca vient pas de ca  :lol:
 
j'exécute tout dans le meme shell, la variable client est toujours à 1 a la fin du batch c'est donc qu'elle existe toujours...
oui je l'execute en double cliquant dessus, et je n'utilise pas de setlocal/endlocal
je vois pas la franchement je suis dessus depuis 4h et ca me lourde  :cry:


Message édité par Kurrt le 21-02-2006 à 17:34:14
Reply

Marsh Posté le 21-02-2006 à 18:06:41    

Déjà comment tu as inventé le then ? ;)
 
Ca n'existe simplement pas.
 
Ensuite, comme je disais, si tu lances le batch (qui modifie la variable) par le double-clic, ça ne risque pas de marcher.

Reply

Marsh Posté le 22-02-2006 à 09:37:45    

Le probleme vient de la la condition, comme ca le 1er "set" de la condition copie dans la variable tout ce qu'il y a derriere "darkness". avec des parentheses correctes ca marche en fait.
 

Code :
  1. @echo Quel client utilisez vous ?
  2. @echo.
  3. @echo 1. Darkness Rising
  4. @echo 2. Catacombs
  5. @echo 3. Atlantis
  6. @echo.
  7. @set /p client=
  8. @echo.
  9. @echo Sur quels serveurs voulez vous jouer ?
  10. @echo.
  11. @echo 1. Francais
  12. @echo 2. Anglais
  13. @echo.
  14. @set /p lang=
  15. @echo.
  16. @echo Veuillez donner lemplacement du repertoire daoc
  17. @echo.
  18. @set /p daocpath=
  19. @del %daocpath%\update.dat
  20. IF %client%==1 (set string=darkness) ELSE (
  21. IF %client%==2 (set string=catacombs) ELSE (
  22.  set string=atlantis))
  23. IF %lang%==1 (
  24. @echo Mythic Patch > %daocpath%\update.dat
  25. @echo patch.camelot-europe.com:1280/updates/french/%string%/mpatch.dat >> %daocpath%\update.dat
  26. @echo patch.camelot-europe.com:1280/updates/french/%string%/mpatch.dat >> %daocpath%\update.dat
  27. ) ELSE (
  28. @echo Mythic Patch > %daocpath%\update.dat
  29. @echo patch.camelot-europe.com:1280/updates/english/%string%/mpatch.dat >> %daocpath%\update.dat
  30. @echo patch.camelot-europe.com:1280/updates/english/%string%/mpatch.dat >> %daocpath%\update.dat
  31. )


Message édité par Kurrt le 22-02-2006 à 10:06:19
Reply

Marsh Posté le 22-02-2006 à 19:58:29    

Dans la version finale, tu peux mettre  
@echo off
au début du script. Ca t'évitera les @ partout.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed