[VB] Exécution d'un ping et redirection vers un fichier log

Exécution d'un ping et redirection vers un fichier log [VB] - VB/VBA/VBS - Programmation

Marsh Posté le 13-07-2005 à 11:11:03    

Bonjour,
voila je voudrais fair une appli qui test une liste d'adresse IP et qui stocke le résultat dans un fichier log (un traitement est prévu sur ce fichier, mais le pb n'est pas là)
 
Voila mon code (qui se déclenche quand je clique sur un boutton) :

Code :
  1. retMsgb = Shell("ping 127.0.0.1 > " & App.Path & "\EtatServeur.log", 1)


 
mais ça ne marche pas !!
la fenêtre DOS s'ouvre et se ferme tout de suite, et mon fichier EtatServeur.log est toujours vide
Le PID que je récupère dans retMsgb est différent de 0, donc à priori, la commande s'est bien déroulé
 
par contre quand je fait  

Code :
  1. retMsgb = Shell("ping 127.0.0.1", 1)


la fenêtre DOS s'ouvre et je vois bien qu'il envoie 4 paquets de données vers l'IP spécifié
 
j'ai essayé de fairer directement dans une fenêtre DOS :
 ping 127.0.0.1 > EtatServeur.log
et là ça marche sans problème !!!    :(  
 
quelqu'un pourrait il m'aider à faire une redirection vers un fichier SVP ?

Reply

Marsh Posté le 13-07-2005 à 11:11:03   

Reply

Marsh Posté le 25-10-2005 à 14:03:29    

J'ai le même problème avec l'utilisation de libcurl en shell :/
Qq peut nous aider ?

Reply

Marsh Posté le 27-01-2006 à 16:56:37    

La commande VB Environ("COMSPEC" ) retourne l'executable de l'environnement de commande.
Cet exe lancé avec le paramètre /c permet de lancer une commande assortie d'une redirection sous la commande Shell.
De plus, si le chemin de l'un des fichiers spécifiés dans la commande comporte des espaces, il faut inclure la spécification du fichier entre guillemets.
Subtilité: il faut encore englober le tout dans une ultime paire de guillemets pour que ça marche quand les deux parties de la commande comportent des guillemets.
Cela donne un truc bien tarabiscoté mais qui marche dans tous les cas.
 
Supposons que l'on veuille rediriger la sortie d'un prog "XYZ" dans un fichier "XYZ.log" placé dans le même répertoire:
     
MyCommand = Environ("COMSPEC" ) & " /c " & """" & """" & MyPath & "\XYZ" & """" & " > " & """" & MyPath & "\XYZ.log" & """" & """"
Shell MyCommand, vbHide

 
   
On peut aussi contourner la difficulté des espaces dans le chemin en se plaçant dans le repertoire voulu,
puis en executant la commande avec un chemin relatif au repertoire courant.
Cette methode fait un peu moins "soupe aux guillemets" mais nécéssite plus d'instructions.
 
WBDrive = Split(MyPath, ":" )(0)
WBPath = Split(MyPath, ":" )(1)
     
If WBDrive <> "" Then ChDrive WBDrive
     
If WBPath = "" Then
    ChDir "\"
Else
    ChDir WBPath
End If
     
Debug.Print "CurDir ", CurDir 'Vérification du répertoire courant.
     
MyCommand = Environ("COMSPEC" ) & " /c " & ".\XYZ" & " > " & ".\XYZ.log"
Shell MyCommand, vbHide

 
 
Le code ci-dessus a été testé sous Excel 2003 VBA.  
 
Inspiré de: http://www.vbforums.com/archive/in [...] 64219.html

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed