Probleme de variables et de boucle (DOS)

Probleme de variables et de boucle (DOS) - Perl - Programmation

Marsh Posté le 22-02-2006 à 08:52:52    

Bonjour,
 
Je debute -faut bien un jour-  en dos_shell et j'ai un gros Pb avec la prise en compte de variables dans les boucles.
Je maitrise les shells Unix, mais ici je suis perdu.
 
Voila ce que je veux faire, par ordre de difficulté:
 
1° test:
"Pour i parmi 1 5 8 seter une variable avec la valeur de i et l'afficher"
Ca a l'air tres simple mais ca marche pas comme je le souhaite:
 
=>Voila ce que je fais dans une fenetre de commande (dans un fichier .bat il faut rajouter des %  si j'ai bien compris..)
 
for %i in ( 1 5 8 ) do (
 set var=%i
 echo %var%
 )
 
En laissant le mode echo a on, je vois bien qu'il assigne bien la valeur voulue a "var" mais le echo me donne %var% et non 1 2 ou 3 comme attendu.
 
Resultat
 )
 set var=1
  echo %var%
 )
 %var%
 (
 set var=5
  echo %var%
 )
 %var%
 (
 set var=8
  echo %var%
 )
 %var%
 
 
En remplacant le echo "%var%" par "echo %var" j'obtiens bien le résultat attendu avec les echo .
 
Question: Quand faut-il utiliser %var ?  %var% ? difference?
 
 
 
2eme test plus compliqué  je cree un fichier testfic.txt avec des lignes du style valeur_lettre (1_A  4_B  9_C ...)
je veux faire une boucle dans ce fichier et parser le resultat en deux variables valeur et lettre que j'affiche :
 
Voila ce que je fais  (toujours avec echo a on )
 
set PARSEARG="eol= tokens=1,2 delims=_"
for /f %PARSEARG% %a in ('type testfic.txt') do (
 set valeur=%a
 set lettre=%b
 echo %lettre
 echo %valeur
)
 
Resultat:
 (
 set valeur=1
  set lettre=A
  echo %lettre
  echo %valeur
 )
 %lettre          <== Pourquoi n'affiche-t-il pas A  ?
 %valeur          <== Pourquoi n'affiche-t-il pas 1  ?
 
 (
 set valeur=5
  set lettre=B
  echo %lettre
  echo %valeur
 )
 %lettre
 %valeur
 
 (
 set valeur=9
  set lettre=D
  echo %lettre
  echo %valeur
 )
 %lettre
 %valeur
 
 
 
Si je remplace echo "%valeur" et "%lettre" par "%valeur%" et "%lettre%" pour les commandes echo,
 voici ce que j'obtiens curieusement:
 
 (
 set valeur=1
  set lettre=A
  echo D             <==Pourquoi affiche-t-il ces valeurs? est-ce un "reliquat" du test précédent?
  echo 9
 )
 D
 9
 
 (
 set valeur=5
  set lettre=B
  echo D
  echo 9
 )
 D
 9
 
 (
 set valeur=9
  set lettre=D
  echo D
  echo 9
 )
 D
 9
 
Merci a tous ceux qui pourront m'eclairer sur la question et me tuyauter sur un bon tutorial dos-shell
 
D'avance merci.

Reply

Marsh Posté le 22-02-2006 à 08:52:52   

Reply

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

mauvaise catégorie: tu es dans la caté perl la

Reply

Sujets relatifs:

Leave a Replay

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