Travailler avec l'invite de commande

Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008 - 8 juin 2008 à 17:50
necrom Messages postés 30 Date d'inscription samedi 8 mars 2003 Statut Membre Dernière intervention 26 janvier 2011 - 19 juin 2008 à 11:17
Bonjour à tous,
Je me posais une question: Est - il possible de travailler avec l'invite de commande ?
Je voudrais qu'à partir de mon programme on puisse envoyer des lignes de commandes à l'invite du genre netsend, netstat...
Possible ?
Merci d'avance.

7 réponses

Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
8 juin 2008 à 18:13
Bonsoir,


avec la commande shell tu peux faire pas mal de chose : http://plasserre.developpez.com/v4-10.htm

par exemple pour faire un net send :  Shell(
"C:\windows\system32\net send poste texte"


_____________
 (débutant inside)
0
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
8 juin 2008 à 18:56
Salut Marneus73,

En VB.NET, on ne peut pas controler directement l'invite de commande. Néanmoins, il est possible d'arriver à le faire en utilisant le système D.

L'astuce serait de créer un fichier bat (fichier de commande dos) et d'y stocker les commandes que tu souhaites exécuter et de lancer ensuite le fichier et cà c'est possible de le faire en VB.NET 

Un petit exemple :

<hr size="2" width="100%" />
Dim SW
As New IO.StreamWriter(
"C:\test.bat") ' Crée un fichier de commande dos
       
SW.WriteLine(
"netstat")
' Ajout de la première commande a exécuter sous l'invite de commande
SW.WriteLine(
"@ECHO OFF")
' Désactivation de l'affichage
SW.WriteLine(
"Pause")
' Attente que l'utilisateur appui sur une touche
SW.WriteLine(
"dir C:")
' Ajout d'une deuxième commande
SW.WriteLine(
"Pause")
' Attente que l'utilisateur appui sur une touche
       
SW.Close()
' On ferme le fichier

Call Shell("C:\test.bat", AppWinStyle.NormalFocus)
' On appelle le fichier

<hr size="2" width="100%" />
Si tu as des soucis, n'hésites pas

++
<hr size="2" width="100%" />Si la réponse vous convient : Réponse Acceptée 
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
8 juin 2008 à 18:57
Slt,
je ne comprends pas bien ton code:
Shell(
"C:\windows\system32\net send poste texte")
Quand je tape ça, ça ne marche pas !
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
8 juin 2008 à 18:59
Slt fauve,
J'y avait pansé, mais j'ai un problème avec les chemins de fichier qui ont des accents. Dans l'invite de commande ça me les remplaces par des @ !?
Y a t'il aussi un autre system D pour récupperer ce qui est écrit dans l'invite de commande.
Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
8 juin 2008 à 19:55
Salut,

Je ne suis pas d'accord avec Fauve, on peut très bien envoyer des commandes et lire le texte de retour. Voici un code qui affiche une MsgBox affichant la réponse d'une commande Ping :

Private Sub TestPing

        ' Création du process avec la ligne de commande 
        Dim p As Process = New Process
        p.StartInfo.FileName = "ping"
        p.StartInfo.Arguments = "google.fr"

        ' Paramètres permettants de lire la sortie du process
        p.StartInfo.UseShellExecute = False
        p.StartInfo.RedirectStandardOutput = True
        p.StartInfo.CreateNoWindow = True
        ' p.StartInfo.StandardOutputEncoding = New System.Text.ASCIIEncoding

        ' Lancer la commande
        p.Start()

        ' Lire la sortie
        Dim output As String = p.StandardOutput.ReadToEnd
        MsgBox(output)

End Sub

Par contre, aucun des codages du texte n'affiche la sortie correctement, je ne comprend pas
Il est bien sur possible de lire le stream de sortie de façon asynchrone.
Il est aussi possible d'injecter des commandes avec StandardInput
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
9 juin 2008 à 12:33
ben "poste" et "texte" ce sont des exemples ...

"poste" c'est le nom du poste reseau à qui tu ecrits
et "texte" c'est ton texte

si tu preferes : Shell("C:\windows\system32\net send nom du poste coucou")

 
c'est juste la syntaxe d'un netsend quoi, ceci n'a rien à voir avec VB

_____________
 (débutant inside)
0
necrom Messages postés 30 Date d'inscription samedi 8 mars 2003 Statut Membre Dernière intervention 26 janvier 2011
19 juin 2008 à 11:17
et faire appel dans une form a une console vous en dites quoi  ? héhé oui les composants natif ca sert de temps à autre.

Necromhttp://www.membres.lycos.fr/stargatesgccenter
0
Rejoignez-nous