[batch dos RESOLU] lire nombre dans fichier et l'exploiter pour calcul

lire nombre dans fichier et l'exploiter pour calcul [batch dos RESOLU] - Shell/Batch - Programmation

Marsh Posté le 04-08-2004 à 16:47:32    

Bonjour,  
 
Voici ma problématique :
 
Lire dans un fichier texte (toto.txt) un nombre.
Prendre ce nombre pour effectuer un calcul (l'incrémenter de +1).
ranger le nombre incrémenté dans ce meme fichier.
 
Ma solution (qui ne fonctionne pas bien entendu) :  
FOR /F "" %%i IN (toto.txt) DO ( SET /A x=%i% + 1 >> toto.txt )
 
Quelqu'un peut il me venir en aide pour me corriger svp ?


Message édité par jefe le 05-08-2004 à 11:31:48
Reply

Marsh Posté le 04-08-2004 à 16:47:32   

Reply

Marsh Posté le 04-08-2004 à 17:04:42    

Impossible en DOS pur :/


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 04-08-2004 à 17:17:11    

ben, j'ai presque reussit la chose en passant par echo sur la valeur calculée, mais ca ne fonctionnait que si je lancait le prog depuis une console, et ca ecrit n'imp. si je le lance directement depuis windows.... et encore ca n'incrementait qu'une fois sur deux. Voila pourquoi j'aimerais me passer de la commande echo.
 
En fait, je sait pas comment utiliser la variable %%i
 
quelqu'un peut t il me donner la theorie (differences) sur :
i
%i
%%i
%i%
 
merci


Message édité par jefe le 04-08-2004 à 17:21:36
Reply

Marsh Posté le 04-08-2004 à 17:52:22    

ici faut que tu fasses déjà un :  
SET /A x=%%i + 1
dans ta boucle...

Reply

Marsh Posté le 04-08-2004 à 18:13:49    

merci, mais je suis toujours en galere :(
 
sinon, pour comprendre un peu j'ai fait ceci :

Code :
  1. @echo off
  2. FOR /F "" %%i IN (toto.txt) DO (
  3. SET /A i=%%i + 1
  4. echo %i% > toto.txt
  5. )


donne ce resultat quand le prog est lancé depuis une console DOS :
 
toto.txt contient 3
toto.txt contient 3
toto.txt contient 4
toto.txt contient 4
toto.txt contient 5
toto.txt contient 5
etc... bref ca incremente un coups sur 2
d'ou ma question sur la difference entre i, %i% et %%i ... j'ai rien trouve pour le moment de bien sur le net expliquant la chose


Message édité par jefe le 04-08-2004 à 18:17:24
Reply

Marsh Posté le 05-08-2004 à 09:37:51    

Alors voici un code qui fonctionne, c'est à dire qu'il lit un nombre dans un fichier texte, l'incrémente et range le nombre incrémenté dans ce meme fichier texte, mais comme j'ai toujours pas bien compris l'essence de la chose (j'y suis arrivé par tatonnements), ce code est pas beau ... s'il y a des amateurs pour corriger et faire un truc plus propre ...
 

Code :
  1. @echo off
  2. cls
  3. SET %%i=0
  4. SET %%y=0
  5. FOR /F "" %%i IN (toto.txt) DO (
  6. SET /A y=%%i + 1
  7. echo %y% > toto.txt
  8. )
  9. FOR /F "" %%i IN (toto.txt) DO (
  10. SET /A y=%%i + 1
  11. echo %y% > toto.txt
  12. echo DANS TOTO.TXT IL Y A : %y%
  13. )


Message édité par jefe le 05-08-2004 à 09:38:55
Reply

Marsh Posté le 05-08-2004 à 09:59:02    

marrant ce comportement en effet !! j'ai aussi le meme probleme.  
tjrs est-il jefe que ton code marche bien c'est le principal...et je dirais comme aux chiffres et aux lettres : pas mieux ;-)

Reply

Marsh Posté le 05-08-2004 à 10:57:28    

Bon, voici finalement une version plus "propre" et fonctionnelle.
Comme quoi il ne faut jamais desesperer !
 

Code :
  1. @echo off
  2. SET %%x=0
  3. FOR /F %%i IN (toto.txt) DO SET /A x=%%i+1
  4. echo %x% > toto.txt


Reply

Marsh Posté le 05-08-2004 à 12:40:30    

SET %%x=0 ne sert à rien.
 
Sinon, bravo, je ne connaissais pas /F pour FOR ni /A pour SET. M'enfin je préfère utiliser WSCRIPT ou CSCRIPT


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 05-08-2004 à 16:59:16    

Moi non plus au depart je connaissais pas .... c'est grace a des recherches dans le forum que j'ai trouve ces pistes (vive la fonction RECHERCHER).
Sinon, pour l'initialisation de %%x au debut, tu as raison, on peut tout a fait l'enlever !

Reply

Sujets relatifs:

Leave a Replay

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