Exécution d'un ping et redirection vers un fichier log [VB] - VB/VBA/VBS - Programmation
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 ?
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
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) :
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
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 ?