Page 1 sur 1

[R] Commandes DOS et AutoIt

Posté : dim. 20 mai 2012 18:27
par blacksoul305
Bonsoir,

je viens vous demander de l'aide car c'est un peu nouveau pour moi mais j'aimerai quand même bien ne pas m'arrêter là.

Comme dit dans le titre, ça concerne les commandes MS-DOS à lancer avec l'AutoIt. Utiliser le CMD, ça m'arrive pas souvent et quand j'le fais avec AutoIt, c'est pour envoyer un utilisateur sur un lien :

Code : Tout sélectionner

_RunDOS("start http://www.google.fr")
Or j'ai envie maintenant d'utiliser maintenant des commandes qui, normalement, lorsque le CMD est bien ouvert, affichent des résultats comme souvent c'est le cas pour des commandes réseaux par exemple : "nbtstat -n".

J'aimerai savoir s'il est possible d'avoir ces résultats et pouvoir les traiter. Je me suis dis : "Bon, bah j'ai qu'à placer cette commande dans une variable et on va voir ce qu'elle me retourne." Elle me retourne 0.

Code : Tout sélectionner

#include <Process.au3>

;$cmds = RunWait(@ComSpec & "/c " & "nbtstat -n","",@SW_HIDE) ; me retourne "erreur : 1"
;$cmds = _RunDOS("nbtstat -n") ; me retourne "erreur : 0"
If $cmds = 0 Then
    MsgBox(16,"lol","erreur : " & @error)
Else
    MsgBox(64,"lol",$cmds)
EndIf
Je vous remercie d'avance !

Re: [..] Commandes DOS et AutoIt

Posté : dim. 20 mai 2012 18:51
par TT22
Il existe une petite astuce qui permet de faire ce que tu veux :
En fait il suffit d'écrire le résultat de la commande dans un fichier, puis de le lire....
► Afficher le texte

Re: [..] Commandes DOS et AutoIt

Posté : dim. 20 mai 2012 18:56
par blacksoul305
J'allais dire : "pas bête", mais j'ai essayé avec plusieurs commande et j'ai un blanc.

Re: [..] Commandes DOS et AutoIt

Posté : dim. 20 mai 2012 20:20
par ani
Bijour, voici un bout de code

Code : Tout sélectionner

#include <Constants.au3>
$CMD = Run(@comspec & " /c nbtstat -n","","",$STDIN_CHILD + $STDOUT_CHILD)
Local $data
While True
    $data &= StdoutRead($CMD)
    If @error Then ExitLoop
    Sleep(25)
WEnd
ConsoleWrite($data)
bon bein voilà, si y a un prob genre des caractèreq non conforme à votre langue, y a un code a rajouter, pour le traitement genre je recherche <20> woupiiii '-.-'
je te laisse le faire ;)

bonne continuation

Re: [..] Commandes DOS et AutoIt

Posté : dim. 20 mai 2012 20:32
par blacksoul305
Salut,

j'te remercie pour ce code super efficace, mais je pense que le truc dans lequel je me lance est un peu trop compliqué. En effet, si je lance cette commande de façon invisible, c'pour en fait pouvoir traiter toutes les données, et j'aimerai récupérer seulement le nom des hôtes ! Tu n'aurais pas un code à me fournir ou bien une piste à suivre ?

Merci encore !

EDIT : Dans ton code, c'est quoi ?

Code : Tout sélectionner

$data [color=#FF0000]&[/color]= StdoutRead($CMD)

Re: [..] Commandes DOS et AutoIt

Posté : dim. 20 mai 2012 21:09
par TT22
blacksoul305 a écrit :Dans ton code, c'est quoi ?

Code : Tout sélectionner

$data [color=#FF0000]&[/color]= StdoutRead($CMD)
Ça veut dire, tu ajoute StdoutRead($CMD) à la suite de la variable $data
Ça revient à faire :

Code : Tout sélectionner

$data = $data & StdoutRead($CMD)
Et ça fonctionne aussi avec les opérations :

Code : Tout sélectionner

$i+=1
Ajoute 1 à la variable $i :wink:

Re: [..] Commandes DOS et AutoIt

Posté : dim. 20 mai 2012 21:11
par blacksoul305
Okay, thanks bro!

EDIT : C'est un merci :lol:

Re: [..] Commandes DOS et AutoIt

Posté : dim. 20 mai 2012 22:20
par ani
Heu non du tout, moi j'utilisais dans le temp une commande supplementaire.
exemple : je recherche juste les lignes avec le caractère "<" ou ">" ect

Code : Tout sélectionner

Nbtstat -n | findstr ">"
tu peux faire un split sur "<" ce qui retournera le nom bios.

Code : Tout sélectionner

$Split = strinsplit($data,"<",1)
consolewrite($Split[1])
je ne peut aider + sur ce coup (de 1 il est tard et j'ai aucun outils a par ms-dos ^^")

Re: [..] Commandes DOS et AutoIt

Posté : sam. 02 juin 2012 12:36
par blacksoul305
Oui, je vais aller au lit car je commence à sécher de toute façon, j'peux plus trop réfléchir non plus.

Merci de ton aide, je regarderai de plus près demain !

EDIT : Désolé pour la remonter de ce post. Merci Ani, j'ai pu regarder le code plus près et c'est ce que je cherchais.