Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2441 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1310809
Kurrt
Posté le 21-02-2006 à 16:29:27  profilanswer
 

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 ? ^^

mood
Publicité
Posté le 21-02-2006 à 16:29:27  profilanswer
 

n°1310837
wackevat
Posté le 21-02-2006 à 16:50:29  profilanswer
 

- 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 /?

n°1310878
Kurrt
Posté le 21-02-2006 à 17:31:43  profilanswer
 

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
n°1310904
wackevat
Posté le 21-02-2006 à 18:06:41  profilanswer
 

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.

n°1311180
Kurrt
Posté le 22-02-2006 à 09:37:45  profilanswer
 

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
n°1311791
wackevat
Posté le 22-02-2006 à 19:58:29  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

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

 

Sujets relatifs
[resolu]Problème de variable[Shell/Batch] Comment faire des boucles ?
[C++ débutant]Constructeur prenant un nombre de paramètres variable ?résolu Problème de concaténation de variable
[resolu] Liste dynamiques liées, pb de récupération de variableProblème exécution de deux requettes simultanée
Est ce que l'on peut faire passer une variable avec un header ?Expression reguliere dans une variable...
passer ds variable dans ds metas[Batch] Expect pour cmd.exe (Win2K Server) sans cygwin
Plus de sujets relatifs à : [Batch] Modifier 1 variable d'environnement en cours d'éxécution


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR