Page 1 sur 1

[R] Lire le contenu d'un invite de commande

Posté : ven. 25 sept. 2009 11:25
par RomainR
Bonjour à tous,

Voilà quelques jours que je me triture le cerveau afin de trouver une solution au problème suivant :

Je dispose d'un simulateur sous forme d'invite de commande windows. Ce simulateur communique avec un équipement (je peux donc envoyer des commandes à l'équipement, qui lui même répond par le biais de tags associés à une valeur).

Je cherche donc à automatiser ce processus par le biais d'AutoIT : j'arrive facilement à envoyer des commandes mais je bloque pour lire les réponses de l'équipement. Je viens donc faire appel à votre aide afin de savoir si il était possible de lire le contenu d'un invite de commande windows (et accessoirement de faire une recherche dans son contenu mais une fois que j'aurai récupéré le contenu sous forme de chaine de caractère, je pense pouvoir m'en sortir :wink: ).

Merci par avance.

Romain

Re: [..] Lire le contenu d'un invite de commande

Posté : ven. 25 sept. 2009 12:54
par jbnh
Bonjour,

Dans la documentation, je t'invite a regarder stdoutRead.

Voici l'exemple fourni qui devrait amplement t'aider ;)

Code : Tout sélectionner

; Demonstrates StdoutRead()
#include <Constants.au3>

Local $foo = Run(@ComSpec & " /c dir foo.bar", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $line
While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDOUT read:", $line)
Wend



MsgBox(0, "Debug", "Exiting...")

Re: [..] Lire le contenu d'un invite de commande

Posté : lun. 05 oct. 2009 14:17
par RomainR
Bonjour et merci pour ta réponse.

J'ai essayé ta fonction et j'ai rencontré de nombreux problèmes car l'invite que j'utilise est commandé par un fichier .bat qui était assez problématiqe à lancer depuyis AutoIT. Bref j'ai réussi à m'en sortir en me rendant compte (completement par hasard) que ma console de commande générait au fur et à mesure un fichier log contenant les réponses de l'équipement. J'ai donc simplement utilisé la fonction StringRegExp et le tour est joué :wink:

Je ne sais pas si ça a le mérite de passer le sujet en résolu mais en tout cas ça marche impecc !

Merci et @+