Votre question

[batch] lire dans un fichier

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
31 Mai 2010 15:50:51

Bonjours à tous :D 
J'ai réaliser un petit script en batch qui permet d'executer des commande avec le logiciel RealTerm.
Voici le script :

  1. cd ../../..
  2. cd "Program Files\BEL\Realterm"
  3. realterm.exe first capture=1 /* met les données recu du port série dans un fichier */
  4. ping 0.0.0.0 -n 1 < NUL /* delay de 1 seconde */
  5. realterm.exe first sendfile=C:\ProgramFiles\Prog1.hex /* programmation du fichier 1 */
  6. ping 0.0.0.0 -n 7 < NUL
  7. realterm.exe first sendfile=C:\ProgramFiles\Prog2.hex
  8. ping 0.0.0.0 -n 1 < NUL
  9. realterm.exe first capture=0


et je voulais savoir s'il est possible en batch, dans mon cas a moi, une fois le 1er programme envoyer, lire dans le fichier de capture et si les caractère s'y trouvant sont égal a une programmation réussit, envoyer le programme 2 ??
Je vous remerci d'avance à l'attention que vous porterez à mon problème.

Autres pages sur : batch lire fichier

1 Juin 2010 14:28:27

Bonjour,

Pour lire un fichier en batch :

  1. FOR /F %i IN (file.txt) DO @echo %i


C'est du ligne par ligne, il suffit d'adapter ... Et rajoute un "capfile=prog1.cap.txt" et "capfile=prog2.cap.txt" dans tes commandes realterm, pour savoir quelles fichiers lire...

Après, ajoute tes conditions sur la ligne du fichier ...
m
0
l
2 Juin 2010 09:30:16

Merci anciennement Redtux nouvellement Redsux pour ta réponse.
Mais j'aurais d'autre question à te poser.
Comme je les expliqué je voudrais lire dans un fichier de capture de realterm,
enfaite lorsque j'envoi un fichier pour programmer un microcontroleur qui est relier au port série, en envoyant se fichier par rs232, si la programmation s'est bien passé le programme me renvoi les caractère suivant "7E004B4B" que je récupère dans mon fichier de capture.
Voici le programme que j'ai réessayé d'écrire :

  1. cd ../../..
  2. cd "Program Files\BEL\Realterm"
  3. realterm.exe first capture=1
  4. ping 0.0.0.0 -n 2 < NUL
  5. realterm.exe first sendfile=C:\prog1.hex
  6. ping 0.0.0.0 -n 8 < NUL
  7.  
  8. FOR /F %i IN (c:\capture.txt) DO ( // lecture du fichier
  9. %i= < c:\capture.txt //je met se qu'il y a dans le fichier de capture dans la variable i
  10. )
  11.  
  12. if %i=="7E004B4B" ( realterm.exe first sendfile=D:\Daniel\SoftRegu\Led2\Source\Led2.hex )
  13. else ( realterm.exe first sendfile=D:\Daniel\SoftRegu\Led1\Source\Led1.hex )


Mais cela ne fonctionne pas, enfaite mon programme beug au niveau du For,
et je ne sais pas si dans ma variable i j'ai bien le contenu du fichier de capture ??
m
0
l
Contenus similaires
2 Juin 2010 11:17:37

Bonjour,

Commençons par ta boucle, il faut bien comprendre que la boucle lit le fichier "capture.txt" ligne par ligne, en mettant la ligne dans la variable 'i'. Donc tu n'as pas besoin de faire un "%i = < ..." , le "IN" dans le "FOR" se charge de remplir 'i'.

Ensuite :

Si j'ai bien saisie, ce que tu souhaites retrouver dans le fichier c'est 4 octets : 7E , 00 , 4B et 4B.

Batch gère ma les traitements binaire ... Donc on transforme en ASCII :
  • 7E = ~
  • 00 = NUL
  • 4B = K

    Donc je te propose de tester la commande "FINDSTR" qui permet d'avoir une petite expression régulière.

    1. @echo off
    2.  
    3. realterm.exe first capfile=C:\capture1.txt sendfile=D:\Daniel\SoftRegu\Led1\Source\Led1.hex
    4.  
    5. FINDSTR.exe /R ~.KK C:\capture1.txt > nul
    6. IF ERRORLEVEL 1 GOTO ERROR
    7.  
    8. realterm.exe first capfile=C:\capture2.txt sendfile=D:\Daniel\SoftRegu\Led2\Source\Led2.hex
    9.  
    10. FINDSTR.exe /R ~.KK C:\capture2.txt > nul
    11. IF ERRORLEVEL 1 GOTO ERROR
    12.  
    13. @echo "all is done"
    14. GOTO EOF
    15.  
    16. :ERROR
    17. @echo "realterm sent failed"
    18.  
    19. :EOF


    Je ne suis pas du tout sur du résultat, et il faudrait vérifier beaucoup de chose ... Mais l'idée y est !!!
    m
    0
    l
    2 Juin 2010 11:36:12

    Le script beug à partir du : FINDSTR.exe /R ~.KK C:\capture1.txt > nul
    Findstr.exe est un fichier de windows non? dois-je lui indiquer l'emplacement de se fichier ?
    Ou je dois me replacer la ou il se trouve avec la commande cd ?
    m
    0
    l
    2 Juin 2010 11:49:03

    findstr est une application Windows ... Je l'utilisais sur Windows 2000 , XP ... Jamais testé sur Vista et Seven ...

    Je ne suis pas un pro du batch, j'arrive aux limites de mes connaissances.

    CRicky est un expert par contre, je luis laisse la main ...
    m
    0
    l
    2 Juin 2010 11:50:25

    D'accord RedSux :wahoo: 
    Je te remerci pour ton aide :hello: 
    m
    0
    l
    Tom's guide dans le monde
    • Allemagne
    • Italie
    • Irlande
    • Royaume Uni
    • Etats Unis
    Suivre Tom's Guide
    Inscrivez-vous à la Newsletter
    • ajouter à twitter
    • ajouter à facebook
    • ajouter un flux RSS