[R] Commandes DOS et AutoIt

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

[R] Commandes DOS et AutoIt

#1

Message 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 !
Modifié en dernier par blacksoul305 le sam. 02 juin 2012 12:36, modifié 1 fois.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Commandes DOS et AutoIt

#2

Message 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
Cordialement,
TT22
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Commandes DOS et AutoIt

#3

Message par blacksoul305 »

J'allais dire : "pas bête", mais j'ai essayé avec plusieurs commande et j'ai un blanc.
Étudiant en 2ème année de Licence Informatique.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Commandes DOS et AutoIt

#4

Message 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
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Commandes DOS et AutoIt

#5

Message 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)
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Commandes DOS et AutoIt

#6

Message 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:
Cordialement,
TT22
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Commandes DOS et AutoIt

#7

Message par blacksoul305 »

Okay, thanks bro!

EDIT : C'est un merci :lol:
Étudiant en 2ème année de Licence Informatique.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Commandes DOS et AutoIt

#8

Message 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 ^^")
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Commandes DOS et AutoIt

#9

Message 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.
Étudiant en 2ème année de Licence Informatique.
Répondre