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:

ecrire dans un batch en vbs


Messages recommandés

salut a tous,

 

voila j'ai besoin de faire un script qui releve mon IP et puis qu'il fasse un ping de l'adresse

mon probleme est que si je fais directement .run "ping " &IP

il va me faire le ping puis se couper sans laisser le temps de voire le resultat

j'ai donc utiliser writeLine pour ecrire la commande dans un .bat de facon a ecrire ceci:

ping xxx.xxx.xxx.xxx

pause>nul

jusque la c'est OK mais le probleme c'est que lorsque je demande a mon script d'executer le batch en question il me repond que le fichier est utiliser par un autre processus :P

 

voici le code merci d'avance pour votre aide

Option Explicit 

Dim reponse ,r ,IP ,start ,FSys ,MonFic

Set r=CreateObject("wscript.shell")
'lecture de l'IP
IP=r.regread("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\{30A89119-03E6-4FD1-B726-7A76A9151259}\Parameters\Tcpip\DhcpIPAddress")

'si pas connecte
If IP="0.0.0.0" Then 
MsgBox "Votre adresse IP est: 127.0.0.1"

Else
'affichage de l'ip
MsgBox "" & vbCrLf & "            Votre adresse IP est:           " & vbCrLf & "" & vbCrLf & "                " &IP, 0, "S-OPTIMIZER"
End If

reponse = MsgBox ("" & vbCrLf & "         Voulez vous faire un ping sur l'adresse ?            " & vbCrLf & "               ", 36, "S-OPTIMIZER")
Select Case reponse 
Case vbYes
       'ecriture dans le fichier .bat
Set FSys = CreateObject("Scripting.FileSystemObject") 
       Set MonFic = FSys.CreateTextFile("c:\fichier.bat")  
       With MonFic 
       .writeLine "ping " &IP
       .writeLine "Pause>nul" 
       End With
       wscript.sleep 2000
       'execution du batch
       r.run "c:\fichier.bat"

       Case vbNo
 end select

Lien à poster
Partager sur d’autres sites

Salut,

 

Il suffit d'ajouter set MonFic=nothing après avoir écrit ton fichier. Cela permet de libérer les ressources mobilisées autour de cet objet et par voie de conséquence d'effacer les verrous systèmes qui ont été posés sur ce fichier.

 

D'une façon générale, c'est une bonne pratique de libérer chaque objet avec set objet=nothing dès lors qu'on en a plus besoin.

 

Sinon ta façon de faire un ping en passant par la création d'un fichier .bat n'est pas très élégante, il y a mieux à faire (code de http://www.microsoft.com/technet/scriptcen...tnc_remote.mspx ) :

On Error Resume Next
strTarget = "192.168.0.1" 'IP address or hostname
Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec("ping " & strTarget)
strPingResults = LCase(objExec.StdOut.ReadAll)

Lien à poster
Partager sur d’autres sites

salut _Michel_,

 

Merci beaucoup pour ta reponse

 

Sinon ta façon de faire un ping en passant par la création d'un fichier .bat n'est pas très élégante, il y a mieux à faire (code de http://www.microsoft.com/technet/scriptcen...tnc_remote.mspx ) :

 

CODE 

On Error Resume Next

strTarget = "192.168.0.1" 'IP address or hostname

Set objShell = CreateObject("WScript.Shell")

Set objExec = objShell.Exec("ping " & strTarget)

strPingResults = LCase(objExec.StdOut.ReadAll)

 

 

Wai c'est claire que c'est beaucoup plus simple ainsi

merci encore @+ :P

Lien à poster
Partager sur d’autres sites

salut a tous,

 

pour receullir l'ip aussi y avait plus elegant !

 

Pour ceux que ca interesse voici le code complet :

Option Explicit 
Dim reponse ,r ,FSys ,MonFic ,objExec ,strPingResults, objWMI, objItem, objItems
Set r=CreateObject("wscript.shell")
Set objWMI = getobject("winmgmts:") 
set objItems = objWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True") 
For Each objItem In objItems 
reponse = MsgBox ("                 Votre IP est : "& objItem.IPAddress(0) & "" & vbCrLf & "" & vbCrLf & "   Voulez vous faire une requete ping sur l'adresse ?      " & vbCrLf & "", 36, "IP-TOOLS")
  Select Case reponse 
  Case vbYes
'                   ping sur l'adresse
On Error Resume Next
Set objExec = r.Exec("ping " & objItem.IPAddress(0))
strPingResults = LCase(objExec.StdOut.ReadAll)
MsgBox "                  REQUETE SUR : " & objItem.IPAddress(0) & "" & vbCrLf & "" & strPingResults & "" , 64, "RESULTAT DE LA REQUETE"
  Case vbNo
  end select
Next

Lien à poster
Partager sur d’autres sites

:P

 

N'oublie pas les set objet=nothing. Cela te permettra peut être d'économiser un temps précieux (devant un bug incompréhensible par exemple) si un jour tu dois étoffer ton code ou l'utiliser dans un autre logiciel.

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...