Comment excuter une commande DOS à partir d'un code VB.net [Résolu]

Signaler
Messages postés
31
Date d'inscription
dimanche 10 février 2008
Statut
Membre
Dernière intervention
4 mai 2009
-
 Utilisateur anonyme -
Bonjour,
Je voudrai donc savoir comment excuter une commande DOS à partir d'un code VB.net??jusque là j'arrive simplement à ouvrir des programmes avec la classe shell
merci de me répondre

15 réponses

Messages postés
31
Date d'inscription
dimanche 10 février 2008
Statut
Membre
Dernière intervention
4 mai 2009
2
D'abord je vous remercie pour votre aide!
je cherche simplement à éxecuter des commandes dos à partir de vb.
Au lieu de l'écrire directement sur la ligne de commande, j'écris la commande sur vb.
quel difference entre
cmd.exe cd ..
et
cmd.exe /C cd .
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Process.Start("format C:")
Messages postés
31
Date d'inscription
dimanche 10 février 2008
Statut
Membre
Dernière intervention
4 mai 2009
2
j'arrive simplement à ouvrir cmd de cette façon

Dim proc As New System.Diagnostics.Process()
proc.StartInfo.FileName = "cmd.exe"
'Arguments à passer à l'éxécutable à lancer
proc.StartInfo.Arguments="cd.."
proc.Start()
proc.Close()

sans pour autant que la commande("cd.." en exemple) ne soit executer
Messages postés
31
Date d'inscription
dimanche 10 février 2008
Statut
Membre
Dernière intervention
4 mai 2009
2
désolé pou l'illisibilité du code, le revois là plus lisible:

Dim proc As New System.Diagnostics.Process()
proc.StartInfo.FileName = "cmd.exe"
proc.StartInfo.Arguments="cd.."
proc.Start()
proc.Close()
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
mais que cherches tu a faire ?

pas confondre

cmd.exe cd ..
et
cmd.exe /C cd ..
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
je vois toujours pas l'interet d'ecrire des commandes DOS...
rare qu'on en ai besoin sous Windows, et y'a moyen de coder ca via le Framework...

possible de lancer des commandes, de récupérer la sortie texte, etc.

bref.


la réponse est dans l'aide en ligne de cmd :

cmd /?
Démarre une nouvelle instance de l'interpréteur de commandes de Windows XP

CMD /U /Q /D /E:OFF /F:OFF /V:OFF
[/S /K chaîne]

/C Exécute la commande donnée par la chaîne de caractères puis se termine
Messages postés
31
Date d'inscription
dimanche 10 février 2008
Statut
Membre
Dernière intervention
4 mai 2009
2
la solution
Shell "C:\Windows\System32\cmd.exe /K ping127.0.0.1"

merci pour votre aide
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
/K Exécute la commande donnée par la chaîne de caractères puis reste actif

du coup, je piges pas trop le /K plutot que le /C

mais je maintiens que s'il ne s'agit que de faire un Ping... pas besoin de t'embeter avec un shell DOS
Messages postés
2
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
12 août 2012

nourddinmaouz
c'est possible d'ecrire
shell"ping 192.168.1.2" par example et ca marche
mais la deffirence c'est que une fois la command c'est terminer la fenetre dos se ferme
alors c'est possible par exmaple de faire
shell"ping -t 192.168.1.2" dans se ka la fenetre va resté et quand tu veux annuler appyer sur controle+c(strg ctrl + c)
merciiiiiiiiiiii;
Messages postés
5
Date d'inscription
jeudi 22 mars 2012
Statut
Membre
Dernière intervention
5 juillet 2012

slt tt le monde je viens de lire votre conversation moi aussi je voudrais manipuler l'invite de commande a travers une interface en c# le probléme c que g pas bien compris ce qu'il faut faire en fin de compte il faut passer en argument qq chose? l'instruction
Shell "C:\Windows\System32\cmd.exe /K ping127.0.0.1" s'ecrit ou exactement ???
merci de me répondre le plus vite possible merci a tous
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
inutile de passer par cmd.exe
impossible de passer par Shell

un Process.Start
suffit ...
avec une lecture de la StandardOutput


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
5
Date d'inscription
jeudi 22 mars 2012
Statut
Membre
Dernière intervention
5 juillet 2012

voila le code que j'ai essayé:
ProcessStartInfo start = new ProcessStartInfo();
// Specify exe name.
//start.RedirectStandardOutput = true;
start.RedirectStandardInput = true;
start.UseShellExecute = false;
start.FileName = @"C:\\Windows\\system32\\cmd.exe";
start.Arguments ="C:\\Windows\\System32\\cmd.exe /K dir";

// Start the process.
using (Process process = Process.Start(start))
{
process.WaitForExit();
}
lors de l'execution la commande dir s'execute mais le terminal se ferme tt de suite aprés c'est a dire que g plus droit a taper des commande comment je pourrais changer ca?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
étrange demande, que cherches tu a faire, au final ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
5
Date d'inscription
jeudi 22 mars 2012
Statut
Membre
Dernière intervention
5 juillet 2012

je vais essayer de t'expliquer par un exemple :
j'ai une interface (une simple supposons qu'elle contient qu'un bouton et un textbox ou je vais entrer la commande a exectuter sur cmd)le code que g donnée vas s'excuter quand je clique sur le bouton
supposons que je fais deux fois de suite l'entrée de "cd.." j'obtiens:
D:\GL3\visual studio .net\test\test\bin>
D:\GL3\visual studio .net\test\test\bin>

ca veux dire qu'a chaque fois le processus se lance a nouveau je cherche a le garder en execution , et manipuler le cmd directement a travers l'interface
j'espére que je me suis bien exprimé cette fois :)

Bonjour,

Pour des besoins particuliers à mon boulot, je viens d'assembler des bouts de code trouvés sur le net pour "pinger" une plage d'adresses IP.
Téléchargeable SUR CE LIEN

Il s'agit d'un "multithread" et en conclusion (par exemple) on scanne 255 adresses en quelques 6 secondes, avec une option de faire un "tracert" sur les adresses valides.

Pas très bien fini, la moitié en anglais, mais fonctionnel...

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique