Commande pour executer un .bat en VB?
Résolu/Fermé
Bonjour,
QuelQu'un pourrai t-il maider?
je cherche la commande pour executer une commande dos ( un ficier .bat) en VB6 merci
QuelQu'un pourrai t-il maider?
je cherche la commande pour executer une commande dos ( un ficier .bat) en VB6 merci
A voir également:
- Commande pour executer un .bat en VB?
- Invite de commande - Guide
- Creer un fichier .bat - Guide
- Vb - Télécharger - Langages
- Commande terminal mac - Guide
- Vb cable - Télécharger - Audio & Musique
10 réponses
ben.d
Messages postés
65
Date d'inscription
samedi 28 juillet 2007
Statut
Membre
Dernière intervention
28 novembre 2007
22
31 juil. 2007 à 21:20
31 juil. 2007 à 21:20
Bonjour,
la commande est Shell(fichier).
exemple:
(exécute le fichier ok.bat situé dans le dossier du programme. Il est possible d'éxécuter des fichiers n'étant pas dans le meme dossier en précistant le chemin)
la commande est Shell(fichier).
exemple:
Shell("ok.bat")
(exécute le fichier ok.bat situé dans le dossier du programme. Il est possible d'éxécuter des fichiers n'étant pas dans le meme dossier en précistant le chemin)
Bonjour,
Certainement, pour afficher le traitement effectué dans un fichier batch dans un interface VB, il suffit d'envoyer le fichier dans un fichier text et de le lire par après pour l'afficher où tu le désires, un TextBox par exemple.
Dim test As New System.Diagnostics.Process
test.StartInfo.FileName = "CMD.exe"
test.StartInfo.Arguments = "/C Dir > c:\ttt.txt"
test.Start()
Ici la commande Dir sera renvoyé dans ttt.txt qui se créera automatiquement. Ensuite, il suffit de le lire
Dim myStream As System.io.StreamReader = Nothing
'Lire un fichier
Try
Me.Cursor.Current = Cursors.WaitCursor
myStream = New System.io.StreamReader("c:\ttt.txt")
Dim line As String
If (Not myStream Is Nothing) Then
Me.TextBox1.Text = Nothing
Do
line = myStream.ReadLine
'Permet d'inscrire le texte qui se trouve dans le fichier dans un TextBox Multiline ...
Me.TextBox1.Text &= line & vbCrLf
Loop Until line Is Nothing
myStream.Close()
End If
Catch ex As Exception
MessageBox.Show("Le fichier ne peut pas être lue")
Finally
Me.Cursor.Current = Cursors.Default
End Try
En espérant que ça puisse t'aider ... Bonne journée.
Avelone
Certainement, pour afficher le traitement effectué dans un fichier batch dans un interface VB, il suffit d'envoyer le fichier dans un fichier text et de le lire par après pour l'afficher où tu le désires, un TextBox par exemple.
Dim test As New System.Diagnostics.Process
test.StartInfo.FileName = "CMD.exe"
test.StartInfo.Arguments = "/C Dir > c:\ttt.txt"
test.Start()
Ici la commande Dir sera renvoyé dans ttt.txt qui se créera automatiquement. Ensuite, il suffit de le lire
Dim myStream As System.io.StreamReader = Nothing
'Lire un fichier
Try
Me.Cursor.Current = Cursors.WaitCursor
myStream = New System.io.StreamReader("c:\ttt.txt")
Dim line As String
If (Not myStream Is Nothing) Then
Me.TextBox1.Text = Nothing
Do
line = myStream.ReadLine
'Permet d'inscrire le texte qui se trouve dans le fichier dans un TextBox Multiline ...
Me.TextBox1.Text &= line & vbCrLf
Loop Until line Is Nothing
myStream.Close()
End If
Catch ex As Exception
MessageBox.Show("Le fichier ne peut pas être lue")
Finally
Me.Cursor.Current = Cursors.Default
End Try
En espérant que ça puisse t'aider ... Bonne journée.
Avelone
Matteo8637
Messages postés
23
Date d'inscription
mercredi 30 janvier 2008
Statut
Membre
Dernière intervention
2 juillet 2011
53
19 nov. 2008 à 22:08
19 nov. 2008 à 22:08
Super Avelone,
Merci beaucoup de cette réponse rapide et claire, je m'en vais essayer ça de ce pas et je reviendrai peut-être si vraiment c''est trop galère à mettre en place.
Ca risque quand même de ne pas être simple pour moi, j'apprends le VB tout seul au coup par coup, au fil de mes besoins. Mais je dois dire que les possibilités que j'y découvre sont super intéressantes... et ça rajoute de la créativité à l'efficacité des scripts.
Arrête-moi si je dis une bêtise, mais je pense qu'au lieu de modifier mes batches (convertis en exe) pour générer 15000 fichiers txt dans le repertoire de mon appli, je pense carrément les reexécuter en les redirigeant, commande par commande dans le code VB. Ca m'évitera d'avoir tous mes petits exe à côté du programme principal et il me restera donc juste à effacer les txt après leur lecture.
J'ai bon sur le principe?
Merci beaucoup de cette réponse rapide et claire, je m'en vais essayer ça de ce pas et je reviendrai peut-être si vraiment c''est trop galère à mettre en place.
Ca risque quand même de ne pas être simple pour moi, j'apprends le VB tout seul au coup par coup, au fil de mes besoins. Mais je dois dire que les possibilités que j'y découvre sont super intéressantes... et ça rajoute de la créativité à l'efficacité des scripts.
Arrête-moi si je dis une bêtise, mais je pense qu'au lieu de modifier mes batches (convertis en exe) pour générer 15000 fichiers txt dans le repertoire de mon appli, je pense carrément les reexécuter en les redirigeant, commande par commande dans le code VB. Ca m'évitera d'avoir tous mes petits exe à côté du programme principal et il me restera donc juste à effacer les txt après leur lecture.
J'ai bon sur le principe?
Matteo8637
Messages postés
23
Date d'inscription
mercredi 30 janvier 2008
Statut
Membre
Dernière intervention
2 juillet 2011
53
17 nov. 2008 à 21:29
17 nov. 2008 à 21:29
Hello,
Shell("C:\Dossier\ou\se\trouve\ton\fichier\ok.bat") par exemple :)
Quant à moi j'ai une question subsidiaire qui découle directement de celle-ci, ça fait un moment que je cherche sans rien trouver...
--> Est-il possible d'afficher le défilement du batch, et ceci DANS une interface VB? Quelqu'un sait?
Shell("C:\Dossier\ou\se\trouve\ton\fichier\ok.bat") par exemple :)
Quant à moi j'ai une question subsidiaire qui découle directement de celle-ci, ça fait un moment que je cherche sans rien trouver...
--> Est-il possible d'afficher le défilement du batch, et ceci DANS une interface VB? Quelqu'un sait?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pmaeght
Messages postés
2
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
20 juillet 2007
20 juil. 2007 à 16:59
20 juil. 2007 à 16:59
Bonjour,
Je suis confronté au même problème.
Peux-tu me dire comment tu fais?
Merci.
Je suis confronté au même problème.
Peux-tu me dire comment tu fais?
Merci.
Ça dépend de tes besoins et de comment tu veux faire les choses, mais c'est logique et c'est possible.
Si tu lis les fichiers textes au fur et à mesure, tu n'es pas obligé d'en créé un à chaque fois, mais écraser celui que tu as déjà créé. Comme ça tu en auras qu'un seul à supprimer à la fin, si tu le désires vraiment.
Avelone
Si tu lis les fichiers textes au fur et à mesure, tu n'es pas obligé d'en créé un à chaque fois, mais écraser celui que tu as déjà créé. Comme ça tu en auras qu'un seul à supprimer à la fin, si tu le désires vraiment.
Avelone
Oui je commence à piger le principe... ce n'est pas encore ça, mais j'arrive à exécuter mon exe en tâche de fond puis à afficher le résultat d'un ping (par exemple) dans la fenetre. Par contre ça ne s'affiche pas au fil de l'exécution, j'ai juste le résultat de ma commande qui vient d'un coup à la fin. En avec un bug d'affichage sur les caracts accentués.
Je vais sans doute devoir garder mes exe ET rediriger leurs commandes une par une dans le ttt.txt... arf, un travail de titan (j'ai des batches de 10 m de long...).
Je vais donc chercher encore comment améliorer cette fonction, en tous cas merci infiniment, j'ai déjà une super piste et un résultat au bout :))) Sur le net, c'est super difficile de trouver des exemples de ce que je veux faire.
Si tu as d'autres idées, ou d'autres pistes, je suis preneur. Mon idée, c'était de montrer à l'utilisateur, quand il clique sur le bouton, qu'il se passe bien quelquechose, car avec l'exe en mode Hide il est aveugle quant à ce qui se passe.
Peut-être une barre de progression, ou alors une animation qui se stoppereait avec le batch... Mais tout cela me semble encore plus compliqué et le temps d'ecécution du script peut varier...
Tu veux pas venir passer le weekend à la maison par hasard? (lol)
Je vais sans doute devoir garder mes exe ET rediriger leurs commandes une par une dans le ttt.txt... arf, un travail de titan (j'ai des batches de 10 m de long...).
Je vais donc chercher encore comment améliorer cette fonction, en tous cas merci infiniment, j'ai déjà une super piste et un résultat au bout :))) Sur le net, c'est super difficile de trouver des exemples de ce que je veux faire.
Si tu as d'autres idées, ou d'autres pistes, je suis preneur. Mon idée, c'était de montrer à l'utilisateur, quand il clique sur le bouton, qu'il se passe bien quelquechose, car avec l'exe en mode Hide il est aveugle quant à ce qui se passe.
Peut-être une barre de progression, ou alors une animation qui se stoppereait avec le batch... Mais tout cela me semble encore plus compliqué et le temps d'ecécution du script peut varier...
Tu veux pas venir passer le weekend à la maison par hasard? (lol)
Je comprend ce que tu veux faire, ou enfin je crois, je vais te donner les grandes lignes directrices et à toi par la suite de les modifier pour que ça fonctionne dans ton cas, si tu éprouves des problèmes, fais mois signe.
Je vais faire un exemple simple, tu peux essayer avant de l'intégrer à ton code avec un fichier .bat qui fait une ligne simple : ipconfig par exemple, on nommera ce fichier ipconfig.bat que tu met sur le disque c.
Dans ton code, tu défini ton process :
Dim process As New Process
process.StartInfo.FileName = "C:\ipconfig.bat"
process.StartInfo.UseShellExecute = False
process.StartInfo.RedirectStandardOutput = True
process.StartInfo.RedirectStandardError = True
process.StartInfo.CreateNoWindow = True
process.Start()
Ensuite, tu inscris les lignes que le fichier .bat te donne dans une chaine que tu concatène en y ajoutant des retour de chariot après chaque ligne:
Dim chaine As String
Do While (process.StandardOutput.Peek >= 0)
chaine &= process.StandardOutput.ReadLine & vbCrLf
Loop
Ensuite, tu affiche ta chaine :
MessageBox.Show(chaine)
Ça devrait faire la job et je n'aurai pas besoin de venir chez vous en fin de semaine ... héhéhé
Avelone
Je vais faire un exemple simple, tu peux essayer avant de l'intégrer à ton code avec un fichier .bat qui fait une ligne simple : ipconfig par exemple, on nommera ce fichier ipconfig.bat que tu met sur le disque c.
Dans ton code, tu défini ton process :
Dim process As New Process
process.StartInfo.FileName = "C:\ipconfig.bat"
process.StartInfo.UseShellExecute = False
process.StartInfo.RedirectStandardOutput = True
process.StartInfo.RedirectStandardError = True
process.StartInfo.CreateNoWindow = True
process.Start()
Ensuite, tu inscris les lignes que le fichier .bat te donne dans une chaine que tu concatène en y ajoutant des retour de chariot après chaque ligne:
Dim chaine As String
Do While (process.StandardOutput.Peek >= 0)
chaine &= process.StandardOutput.ReadLine & vbCrLf
Loop
Ensuite, tu affiche ta chaine :
MessageBox.Show(chaine)
Ça devrait faire la job et je n'aurai pas besoin de venir chez vous en fin de semaine ... héhéhé
Avelone
Matteo8637
Messages postés
23
Date d'inscription
mercredi 30 janvier 2008
Statut
Membre
Dernière intervention
2 juillet 2011
53
21 nov. 2008 à 20:27
21 nov. 2008 à 20:27
Quel dommage \o/
Merci de tes précisions, je commence à comprendre la logique de VB; au début je n'avais pas déclaré mes actons/process aux bons endroits et j'ai dû tatonner pour que ça marche.
La si je comprends bien je redirige le résultat de ma commande batch dans un popup^^.
Je crois que je vais me faire quelques tutos sinon je vais t'innonder de questions, je suis à fond dedans en ce moment.
Merci encore de ta disponibilité Avelone,
A+
Merci de tes précisions, je commence à comprendre la logique de VB; au début je n'avais pas déclaré mes actons/process aux bons endroits et j'ai dû tatonner pour que ça marche.
La si je comprends bien je redirige le résultat de ma commande batch dans un popup^^.
Je crois que je vais me faire quelques tutos sinon je vais t'innonder de questions, je suis à fond dedans en ce moment.
Merci encore de ta disponibilité Avelone,
A+
Pas de problème pour la dispo, ça fais plaisir,
Tu dis "La si je comprends bien je redirige le résultat de ma commande batch dans un popup^^."
Oui, dans mon exemple, c'est vrai, mais tu peux afficher le résultat où tu désires, dansun textbox multiline par exemple ou encore dans une autre fenêtre, tu fais ce que tu désires ensuite avec ta chaine.
Avelone.
Tu dis "La si je comprends bien je redirige le résultat de ma commande batch dans un popup^^."
Oui, dans mon exemple, c'est vrai, mais tu peux afficher le résultat où tu désires, dansun textbox multiline par exemple ou encore dans une autre fenêtre, tu fais ce que tu désires ensuite avec ta chaine.
Avelone.
freto
Messages postés
1542
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
8 avril 2016
162
25 juil. 2007 à 15:11
25 juil. 2007 à 15:11
en fait, vu que DD n'est pas membre visiblement, je ne pense pas qu'on le reverra de si tôt
C'est dommage...
C'est dommage...
30 oct. 2008 à 12:42
SVP