Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

convertir batch en visual basic


Messages recommandés

salut tout le monde,

j'aimerai que vous m'aidiez:

j'ai crée un batch qui fait appelle à netcat et etabli une connexion à un serveur smtp, j'aimerai integrer ce batch dans un programme en visual basic, afin que je puisse controler sa fenetre à ma guise.

y a t-il un moyen pour le faire?

merci.

Lien à poster
Partager sur d’autres sites

salut proximad,

 

Je sais pas ce qu'est netcat mais je pense que tu as deux sollution

 

soit tu ecris ton batch via ton prog VB soit tu executes tes commandes directement via VB voir une troisieme sollution tu appel ton batch depuis ton code VB

 

Mais il serait plus facile de t'aider si tu nous donnais un bout de ton code batch

voila en esperant t'aider @+

Lien à poster
Partager sur d’autres sites

salut sebdraluorg,

merci pour ta reponse, peux tu m'expliquer comment ecrire un batch en VB? quelle commande dois je utiliser pour que mon programme comprenne les commandes ms-dos et les execute. mon but est de faire un programme avec des commandes ms-dos mais avec une fenetre generée par VB comme ça je pourrai la manipuler comme je veux.

netcat est un puissant logiciel freeware et open source qui gere les connections entre serveur et client, tu peux l'utiliser pour ecouter des ports ou te connecter à un serveur quelqonque (smtp,ftp ou autre)

voici un tuto si ca t'interesse:

http://www.linux-pour-lesnuls.com/netcat.php

voici mon code:

echo smtp.***.** 25 > log.txt
echo ehlo smtp.***.** >> log.txt
echo mail from: ***@hotmail.com >> log.txt
echo rcpt to: **********@hotmail.com >> log.txt
echo data >> log.txt
echo l'adresse ip est:  >> log.txt
ipconfig >> log.txt
echo.>> log.txt
echo.>> log.txt
echo..>> log.txt
echo.>> log.txt
echo quit>> log.txt
cls
nc < log.txt

smtp.***.** : est un serveur smtp

nc est la commande qui fait appelle à netcat

le programme redirige vers une sortie (log.txt) un texte et le resultat de la commande ipconfig, puis cette sortie est utilisée comme entrée dans netcat, le but est d'envoyer mon adresse ip à ma boite email.

merci

Lien à poster
Partager sur d’autres sites

Si je me souviens bien, tu exécutes une commande "cmd.exe" (ou un autre shell) en redirigeant les entrées et sorties standard, et tu fais exécuter à peu près tout ce que tu veux à ta ligne de commande en passant les commandes par l'entrée standard, et en récupérant les résultats par la sortie standard.

 

Lorsque j'ai eu ce genre de trucs à tester en C# j'utilisais System.Diagnostics.Process, en m'inspirant de ce post : http://dotnetjunkies.com/WebLog/bsblog/arc...5/13/13484.aspx

 

// Get the full file path
string strFilePath = “c:\\temp\\test.bat”;

// Create the ProcessInfo object
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("cmd.exe");
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.RedirectStandardInput = true;
psi.RedirectStandardError = true;
psi.WorkingDirectory = “c:\\temp\\“;

// Start the process
System.Diagnostics.Process proc = System.Diagnostics.Process.Start(psi);

// Open the batch file for reading
System.IO.StreamReader strm = System.IO.File.OpenText(strFilePath);

// Attach the output for reading
System.IO.StreamReader sOut = proc.StandardOutput;

// Attach the in for writing
System.IO.StreamWriter sIn = proc.StandardInput;

// Write each line of the batch file to standard input
while(strm.Peek() != -1)
{
 sIn.WriteLine(strm.ReadLine());
}

strm.Close();

// Exit CMD.EXE
string stEchoFmt = "# {0} run successfully. Exiting";

sIn.WriteLine(String.Format(stEchoFmt, strFilePath));
sIn.WriteLine("EXIT");

// Close the process
proc.Close();

// Read the sOut to a string.
string results = sOut.ReadToEnd().Trim();

// Close the io Streams;
sIn.Close();
sOut.Close();

// Write out the results.
string fmtStdOut = "<font face=courier size=0>{0}</font>";
this.Response.Write(String.Format(fmtStdOut,results.Replace(System.Environment.NewLine, "<br>")));

Lien à poster
Partager sur d’autres sites

salut a tous,

 

Je suppose que KewlCat a mis le code pour t'expliquer la methode ca doit etre faisable en VB j'ai pas eu le temps de me pencher dessus

mais sinon tu peux tjs essayer comme je disais avant en ecrivant ton batch depuis ton code VB exemple avec le code que tu as ecris plus haut:

Set FSys = CreateObject("Scripting.FileSystemObject") 
Set MonFic = FSys.CreateTextFile("c:\fichier.bat") 
With MonFic
.writeLine "echo smtp.***.** 25 > log.txt"
.writeLine "echo ehlo smtp.***.** >> log.txt"
.writeLine "echo mail from: ***@hotmail.com >> log.txt"
.writeLine "echo rcpt to: **********@hotmail.com >> log.txt"
.writeLine "echo data >> log.txt"
.writeLine "echo data >> log.txt"
.writeLine "ipconfig >> log.txt"
.writeLine "echo.>> log.txt"
.writeLine "echo..>> log.txt"
.writeLine "echo.>> log.txt"
.writeLine "echo quit>> log.txt"
.writeLine "cls"
.writeLine "nc < log.txt"
End With
MsgBox "Écriture réussie dans C:\fichier.bat"

 

C'est pas ce qu'il y a de plus elegant mais bon... si ca peut t'aider

Modifié par sebdraluorg
Lien à poster
Partager sur d’autres sites

On peut lancer une commande facilement en Vb :

Shell "commande"

Donc pourquoi pas balancer les mêmes lignes que le batch ?

Shell "echo smtp.***.** 25 > log.txt"
Shell "echo ehlo smtp.***.** >> log.txt"
Shell "echo mail from: ***@hotmail.com >> log.txt"
Shell "echo rcpt to: **********@hotmail.com >> log.txt"
Shell "echo data >> log.txt"
Shell "echo data >> log.txt"
Shell "ipconfig >> log.txt"
Shell "echo.>> log.txt"
Shell "echo..>> log.txt"
Shell "echo.>> log.txt"
Shell "echo quit>> log.txt"
Shell "cls"
Shell "nc < log.txt"

Le problème de cette solution est qu'elle va lancer autant de fenêtre de commande que de lignes Shell ... donc à éviter comme la peste ...

 

Ou alors, j'y pense à l'instant seulement, mixer les 2 solutions ... parce que .WriteLine "ipconfig" ne fera qu'écrire "ipconfig" sans balancer les informations ...

Lien à poster
Partager sur d’autres sites

salut GEN,

 

wai mais est ce que de cette maniere le script vb enregistre les resultats ?

sinon ca change pas grand chose en fait il doit quand meme aller relire les infos dans son log.txt :P

Lien à poster
Partager sur d’autres sites

Donc je propose un truc dans ce genre là bien que je ne l'ai pas testé

Set FSys = CreateObject("Scripting.FileSystemObject") 
Set MonFic = FSys.CreateTextFile("log.txt") 
With MonFic
.writeLine "smtp.***.** 25"
.writeLine "ehlo smtp.***.**"
.writeLine "mail from: ***@hotmail.com"
.writeLine "rcpt to: **********@hotmail.com"
.writeLine "data"
.writeLine "data"
Shell "ipconfig >> " + App.Path + "\log.txt"
.writeLine ""
.writeLine "."
.writeLine ""
.writeLine "quit"
.writeLine "cls"
End With
MsgBox "Écriture réussie dans log.txt"
Shell "nc < " + App.Path + "\log.txt"

En fait ce n'est pas tout à fait bon puisque la commande shell ne marchera pas, il faut d'abord fermer le fichier dans VB pour libérer les droits d'accès, executer la concatenation de ipconfig, puis une fois la commande shell executée, rouvrir le fichier log.txt mais pas en Create, juste en modifications :P (désolé j'ai pas mon bouquin de Vb sur moi ... ce soir si personne n'a donné la solution je la chercherais)

Lien à poster
Partager sur d’autres sites

merci les gars pour votre aide, j'ai utilisé votre code, et j'ai mis dans une feuille deux bouttons, quand on clique sur le premier il genere le fichier "fichier.bat" et quand on clique sur le deuxieme il appelle le batch, mais voila, moi ce que je voulais c'est rendre l'execution du batch invisible, je voulais l'executer dans la feuille et y mettre un truc du genre Form1.Visible = False, est ce que c'est possible avec visual basic?

merci

Lien à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×
×
  • Créer...