variable

variable - Shell/Batch - Programmation

Marsh Posté le 17-03-2004 à 14:37:17    

Bonjour à tous  
j'ai un pb sur la ligne en remarque  
 
set pr_name1=hp5000n
set pr_name2=bj200
set pr_name3=hp4500
:startfor
rem         set pr_name=%(prname%i%)%
        set PR_REMOTE="\\%PRINTSVR%\%PR_NAME%"
 set PR_CONFIG="U:\.printer_W32\%PR_NAME%.log"
 
set /a i=i+1
set TESTPR_NAME=PR_NAME%i%
if defined %TESTPR_NAME% goto startfor  
 
comment faire pour attribuer à une variable le contenu d'une autre variable contenant elle-même une variable ?

Reply

Marsh Posté le 17-03-2004 à 14:37:17   

Reply

Marsh Posté le 17-03-2004 à 18:28:18    

outsy a écrit :

Bonjour à tous  
j'ai un pb sur la ligne en remarque  
 
set pr_name1=hp5000n
set pr_name2=bj200
set pr_name3=hp4500
:startfor
rem         set pr_name=%(prname%i%)%
        set PR_REMOTE="\\%PRINTSVR%\%PR_NAME%"
 set PR_CONFIG="U:\.printer_W32\%PR_NAME%.log"
 
set /a i=i+1
set TESTPR_NAME=PR_NAME%i%
if defined %TESTPR_NAME% goto startfor  
 
comment faire pour attribuer à une variable le contenu d'une autre variable contenant elle-même une variable ?
 


 
A mon avis le probleme est que tu lui demande d'utiliser une variable ( i ) alors qu'elle n'est pas encore déclarée.
Il lui faut une valeur de défaut au depart:
met
set i=1
au tout debut ( ou avant d'utiliser ton expression )


Message édité par Karamba le 17-03-2004 à 18:29:33
Reply

Marsh Posté le 18-03-2004 à 09:24:10    

Non en fait lors de la premièrer boucle je voudrais que :
pr_name=hp5000n
or si je dis pr_name=%(pr_name%i%)% il considere cela comme une chaine : pr_name=%(pr_name%i%)%  
je voudrais qu'il interprète la valeur de i du style  
pr_name=%pr_name1% et enfin qu'il affecte pr_name=hp5000n comme je l'ai déclaré dans set pr-name1=hp5000n
 
set pr_name1=hp5000n  
set pr_name2=bj200  
set pr_name3=hp4500  
set i=1
set pr_name=
 
:startfor  
         set pr_name=%(pr_name%i%)%
        set PR_REMOTE="\\%PRINTSVR%\%PR_NAME%"  
 set PR_CONFIG="U:\.printer_W32\%PR_NAME%.log"  
 
set /a i=i+1  
set TESTPR_NAME=PR_NAME%i%  
if defined %TESTPR_NAME% goto startfor  

Reply

Marsh Posté le 20-03-2004 à 21:57:13    

outsy a écrit :

Non en fait lors de la premièrer boucle je voudrais que :
pr_name=hp5000n
or si je dis pr_name=%(pr_name%i%)% il considere cela comme une chaine : pr_name=%(pr_name%i%)%  
je voudrais qu'il interprète la valeur de i du style  
pr_name=%pr_name1% et enfin qu'il affecte pr_name=hp5000n comme je l'ai déclaré dans set pr-name1=hp5000n
 
set pr_name1=hp5000n  
set pr_name2=bj200  
set pr_name3=hp4500  
set i=1
set pr_name=
 
:startfor  
         set pr_name=%(pr_name%i%)%
        set PR_REMOTE="\\%PRINTSVR%\%PR_NAME%"  
 set PR_CONFIG="U:\.printer_W32\%PR_NAME%.log"  
 
set /a i=i+1  
set TESTPR_NAME=PR_NAME%i%  
if defined %TESTPR_NAME% goto startfor  


 
Ca peut etre remplacé par set pr_name=pr_name%i%
mais biensur apres tu as le probleme que c'est la chaine de caractère "pr_name1" par exemple, et non la valeur de cette variable.
Le probleme n'a peut etre pas de solution ( je sais qu'en C on utilise les tableaux pour palier a ça ) mais toi tu peux utiliser des if
 
C'est à mon avis le mieux a faire...

Reply

Marsh Posté le 23-03-2004 à 15:01:00    

ok c'est ce que j'ai fait en créant un fichier contenant la liste de mes pr_name
 
Merci encore.
 
 

Reply

Sujets relatifs:

Leave a Replay

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