Variable variable en DOS ????

Variable variable en DOS ???? - Divers - Programmation

Marsh Posté le 26-02-2006 à 12:46:13    

Bonjour,
 
Est in possible de faire une variable Variable en dos ...
Je m'explique :
 
J'ai des variables DRV1,DRV2,DRV3 etc... Et une compteur Cnt.
 
Dans une boucle je voudaris pouvoir faire ceci :
 
 
:LoopCount
Set D=%DRV%Cnt%%
Set E=%Elm%Cnt%%

 
echo "Drive%Cnt% : %D% --> Element : %E%"
set /A Cnt = %Cnt% + 1
If %Cnt% GTR %NbDrive% goto Fin
Goto LoopCount
 
 
C'est là que ca coince...
Set D=%DRV%Cnt%%
Set E=%Elm%Cnt%%

 
Je n'arrive pas à construire une varible et à en récupérer le contenu
Ex : DRV1 contient mt3.0.0.2
Je veux construire une variable DRV%Cnt% et récupérer le contenu ( DRV1, DRV2...)
 
en faite je voudrais avoir la même chose que ça mais via une boucle
echo "Drive1 : %DRV1% --> Element : %Elm1%  
echo "Drive2 : %DRV2% --> Element : %Elm2%  
echo "Drive3 : %DRV3% --> Element : %Elm3%  
 
Suis-je assez clair ?
 
Merci pour votre aide..

Reply

Marsh Posté le 26-02-2006 à 12:46:13   

Reply

Marsh Posté le 26-02-2006 à 15:39:36    

Les % sont interprétés de gauche à droit :
%DRV%Cnt%%
sera donc considéré comme une concaténation de :
%DRV%
Cnt

et
%%
et retournera donc Cnt puisque DRV n'est pas initialisé.

Reply

Marsh Posté le 26-02-2006 à 16:12:55    

Donc commment faire pour avoir le contenu de %DRV1% en utilisant une concaténation pour l'obtenir ?
 
DRV%Cnt% est bien égal à DRV1 mais comment obtenir la valeur de DRV1 en utiilisant DRV%Cnt% ?
 
Merci.

Reply

Marsh Posté le 26-02-2006 à 16:43:50    

Ce n'est pas possible malheureusement. Même dans les langages plus avancés, ça ne doit pas être évident non plus. Alors que le batch...
 
Par contre, tu peux utiliser ta boucle pour générer un deuxième batch dans lequel les variables seront appelées une par une de façon "séquentielle".

Reply

Marsh Posté le 28-02-2006 à 20:46:17    

Ok !
 
Bonn je sais qu'en VBS ça marche, mais bon j'ai pas envie de me convertir le code en VBS... Pas le temps !
 
Dommage qu'on ne puisse pas pointer sur un pointeur de pointeur comme en C...
 
@+ et Merci

Reply

Sujets relatifs:

Leave a Replay

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