Page 1 sur 1

récuperer une ligne CMD

Publié : lun. 13/avr./2009 14:59
par venom
bonjour,

voila aujourd'hui j'ai décidé de passer par purebasic pour envoyer une commande a l'invité de commende.

bon sa c'est fait mais la ou je blque c'est comment récupérer une ligne parmi toutes les lignes :?

pour mieu comprendre si je tape ping 127.0.0.1 sa me renvoie sa :

Code : Tout sélectionner

Envoi d'une requête 'ping' sur 127.0.0.1 avec 32 octets de données:

Réponse de 127.0.0.1: octets=32 temps<1ms TTL=128

Réponse de 127.0.0.1: octets=32 temps<1ms TTL=128

Réponse de 127.0.0.1: octets=32 temps<1ms TTL=128

Réponse de 127.0.0.1: octets=32 temps<1ms TTL=128

Statistiques Ping pour 127.0.0.1:

    Paquets: envoyés = 4, reçus = 4, perdus = 0 (perte 0%),

Durée approximative des boucles en millisecondes :

    Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms
moi je souhaite récupérer la ligne :

Code : Tout sélectionner

 Paquets: envoyés = 4, reçus = 4, perdus = 0 (perte 0%),
donc c'est la que je coince :?

voici mon code en purebasic qui permet de pinger :

Code : Tout sélectionner

EnableExplicit

Define ping.l = RunProgram("ping", "127.0.0.1", "", #PB_Program_Open|#PB_Program_Read)
Define Output.s = ""
If ping
  While ProgramRunning(ping)
    Output + ReadProgramString(ping) + Chr(13)
  Wend
  CloseProgram(ping)
  Output + Chr(13) + Chr(13)
EndIf
MessageRequester("ping", Output)
d'avance merci





@++

Publié : lun. 13/avr./2009 15:16
par Jacobus
Comme ça peut-être

Code : Tout sélectionner

EnableExplicit 
Define ping.l = RunProgram("ping", "127.0.0.1", "", #PB_Program_Open|#PB_Program_Read) 
Define Output.s = "" 
If ping 
  While ProgramRunning(ping) 
    Output = ReadProgramString(ping) 
    If FindString(Output,"Paq",1)
     Break 
    EndIf 
  Wend 
  CloseProgram(ping) 
  MessageRequester("ping", Output) 
EndIf

Publié : lun. 13/avr./2009 15:52
par venom

Code : Tout sélectionner

If FindString(Output,"Paq",1) 
c'est pas mal sa merci c'est cool.





@++

Publié : ven. 24/avr./2009 10:35
par kerkael
Salut,

Sinon, tu fais comment pour corriger les accents envoyés par La commande de windows sur OS en français ?

Par ailleurs, si tu cherche une String Paq, est-ce que tu ne risques pas d'avoir un Windows Tcheque ou Polonais qui te renverrait une autre ligne que celle que tu veux.

Bon, c'est une question windows ... est-ce qu'on a moyen de forcer une commande windows à renvoyer des informations dans une langue imposée, distincte de celle de l'os installé ?

Publié : ven. 24/avr./2009 19:26
par Le Soldat Inconnu
la solution multilangue serait de chercher la ligne qui a 3 caractères "=" :roll:

Publié : sam. 25/avr./2009 9:45
par KrisJNT
Je ne sais pas si j'ai bien compris, mais il existe un moyen de récupérer le contenu de la console dans un fichier. Exemple :

ipconfig /all >result.txt

Voila, ca pourra peut-être t'aider ! :wink:

Publié : sam. 25/avr./2009 10:03
par gnozal
kerkael a écrit :Sinon, tu fais comment pour corriger les accents envoyés par La commande de windows sur OS en français ?
Windows utilise le code ANSI, sauf la console qui utilise le code ASCII (comme le MS-DOS !).
Pour passer de l'un à l'autre il existe les fonctions API CharToOem_() et OemToChar_().

Sinon, il y a des codes pour faire du PING ici :
http://www.purebasic.fr/english/viewtopic.php?t=36390
http://www.purebasic.fr/english/viewtopic.php?t=18616
http://www.purebasic.fr/english/viewtopic.php?t=3717

Publié : sam. 25/avr./2009 16:21
par kerkael
Super, et merci pour la différence entre ASCII et ANSI.

Publié : dim. 26/avr./2009 4:00
par minirop
gnozal > aucun rapport, l'ANSI (l'institut) a "crée" l'ASCII (la norme).
le problème vient des versions étendues (caractères supérieurs à 127) car la console de windows utilise "windows-1252" alors que le reste est généralement en iso-8859-* (1 ou 15 pour la France)

Publié : dim. 26/avr./2009 8:00
par Ollivier
@Minirop

Salut, quelle(s) fonction(s) ou quel algo utiliser dans ce cas ?

Ollivier

Publié : lun. 27/avr./2009 7:57
par gnozal
minirop a écrit :gnozal > aucun rapport, l'ANSI (l'institut) a "crée" l'ASCII (la norme).
Merci, je sais que ANSI = 'American National Standards Institute', cependant je maintiens mon affirmation.
Par ailleurs, l'ASCII a été défini par l'ASA, un ancètre de l'ANSI, pour les TTY (télétypes) et pas pour l'informatique ...

On parle de set de caractères ANSI par opposition au set de caractères ASCII. Les premiers 127 caractères sont identiques, ce qui explique que les anglo-saxons n'ont pas de problèmes. Par contre, les caractères 'étendus' comme les caractères accentués placés après 127 ont un code différent en ASCII et en ANSI.

Fais une recherche sur ANSI Character Set ...

Références :
MSDN : http://msdn.microsoft.com/en-us/library ... S.85).aspx
The ANSI Character Set : www.microsoft.com/typography/unicode/cs.htm
Wikipedia : "The term 'ANSI code page' is also used to refer to code pages used in Windows, like Windows-1252" ; http://en.wikipedia.org/wiki/Windows-1252
etc ...