Echo du contenu d'une variable possible ?

Echo du contenu d'une variable possible ? - Shell/Batch - Programmation

Marsh Posté le 21-04-2010 à 11:52:35    

Bonjour à vous,
 
J'ai un petit soucis dans le dévellopement d'un batch. J'ai un peu de mal à expliquer clairement donc je vous montre en 4 lignes !
 
J'ai deux variables:
set TEST1=VOILA
set TEST2=TEST1
 
J'aimerais accéder à la chaine définit pour TEST1 (donc VOILA) en passant uniquement par TEST2.
 
J'avais penser à un truc du genre : echo %('echo %TEST2%')%
 
L'exemple peu semblé un peu bidon mais j'ai besoin de ce cas de figure dans mon dévellopement.
Merci
François

Reply

Marsh Posté le 21-04-2010 à 11:52:35   

Reply

Marsh Posté le 21-04-2010 à 14:42:22    

set TEST1=VOILA
set TEST2=%TEST1%
 
echo %TEST2%
 
??

Reply

Marsh Posté le 22-04-2010 à 11:59:57    

@Arcan : non car dans ton exemple test2 prend la valeur de test1
 
Ce qu'il souhaite est plutot une sorte de pointeur et ca n'existe pas en dos.
 
En bidouillant on faire quelque chose comme ceci :  
for /f %i IN ('echo %%TEST2%%') do echo %i
 
Mais ca reste vraiemnt très crade.
 
@chuckboy2 : essaye d'envisager une autre manière de faire, ou passe sous un langue un peu plus évoluer.


---------------
Quand on aime on ne compte pas. Quel Dilemme lorsque l'on aime compter !
Reply

Marsh Posté le 27-04-2010 à 14:52:56    

Bon j'ai trouver une solution quelque peu crados mais qui fonctionne pour  
avoir mes pointeurs dans mes batch !
 
Sous UNIX:
env | grep $TEST2 | while read line
 do
   EnvVar=`echo $line | cut -d'=' -f1`
   EnvValue=`echo $line | cut -d'=' -f2`
   if [ "$EnvVar" == "$TEST2" ]; then
      ServiceFile=$EnvValue
   fi
done
 
Sous Windows:
for /f "tokens=1 delims=" %%r in ('set %TEST2%') do (  
 for /f "tokens=1 delims==" %%s in ('echo %%r') do (  
  if "%TEST2%" == "%%s" (
   for /f "tokens=2 delims==" %%t in ('echo %%r') do ( set ServiceFile=%%t)
   )
  )
)
 
C'est laid mais c'est a seule facon que j'ai trouvé !


Message édité par chuckboy2 le 27-04-2010 à 14:54:33
Reply

Sujets relatifs:

Leave a Replay

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