Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Optimiser un script

5 réponses
Avatar
Major TOM
Bonjour,

Je désire lancer plusieurs pings en même temps sur plusieurs machine dans des
fenêtres Dos.
Mon script fonctionne mais je voudrais l'optimiser.
En effet dans la boucle pour chaque run, un process wscript se lance et se ferme
à la fin de la commande cmd.
Est 'il possible, par je ne sais quel miracle, de terminer le processus wscript
sans fermer la commande cmd en cours.
Par le gestionnaire des tâches, ça marche. Je termine le processus et le ping
continu.


' ********** Script principal : SendPing.Vbs ***********
numNetwork = "192.168.1." ' Ici : Numéro IP du réseau (sans le 0 mais avec le
point)
numPlageBeg = "80" ' Ici : Débit de la plage IP
numPlageEnd = "90" ' Ici : fin de la plage IP

subScript = "PingIp.Vbs"
Set objShell = CreateObject("WScript.Shell")
For item = numPlageBeg To numPlageEnd
strTarget = numNetwork & item
objShell.Run subScript & " " & strTarget
Next

' ********** Script principal : SendPing.Vbs ***********

' ********** Sub-Script : PingIp.Vbs ***********
nbPing = 100
numDelay = 30
Set objArg = Wscript.Arguments
strArg = objArg(0)
Set objShell = CreateObject("WScript.Shell")
objShell.Run "cmd /c ping -n " & nbPing & " -w " & numDelay & " " & strArg, 1,
True
' ********** Sub-Script : PingIp.Vbs ***********


Par avance, merci de votre aide.

Thierry

5 réponses

Avatar
Georges MAUREL
Bonjour,
Je ne sais pas si j'ai bien compris votre problème, mais si vous désirez
garder les fênetres de commande ouvertes à la fin de l'exécution du ping,
vous devez remplacer /c par /K dans la ligne de l'appel à cmd

Cordialement
Georges

"Major TOM" a écrit dans le message de
news:
Bonjour,

Je désire lancer plusieurs pings en même temps sur plusieurs machine dans
des

fenêtres Dos.
Mon script fonctionne mais je voudrais l'optimiser.
En effet dans la boucle pour chaque run, un process wscript se lance et se
ferme

à la fin de la commande cmd.
Est 'il possible, par je ne sais quel miracle, de terminer le processus
wscript

sans fermer la commande cmd en cours.
Par le gestionnaire des tâches, ça marche. Je termine le processus et le
ping

continu.


' ********** Script principal : SendPing.Vbs ***********
numNetwork = "192.168.1." ' Ici : Numéro IP du réseau (sans le 0 mais avec
le

point)
numPlageBeg = "80" ' Ici : Débit de la plage IP
numPlageEnd = "90" ' Ici : fin de la plage IP

subScript = "PingIp.Vbs"
Set objShell = CreateObject("WScript.Shell")
For item = numPlageBeg To numPlageEnd
strTarget = numNetwork & item
objShell.Run subScript & " " & strTarget
Next

' ********** Script principal : SendPing.Vbs ***********

' ********** Sub-Script : PingIp.Vbs ***********
nbPing = 100
numDelay = 30
Set objArg = Wscript.Arguments
strArg = objArg(0)
Set objShell = CreateObject("WScript.Shell")
objShell.Run "cmd /c ping -n " & nbPing & " -w " & numDelay & " " &
strArg, 1,

True
' ********** Sub-Script : PingIp.Vbs ***********


Par avance, merci de votre aide.

Thierry




Avatar
Ziggy
Je ne sais pas si j'ai bien compris votre problème, mais si vous désirez
garder les fênetres de commande ouvertes à la fin de l'exécution du ping,
vous devez remplacer /c par /K dans la ligne de l'appel à cmd



Non c'est pas ça.
Mon premier script boucle sur une plage d'adresses max 254 hosts
A chaque boucle, il lance un wscript en mémoire d'environ 6Mo donc 6Mo x 254
= 1524Mo
Le sous-script lance Cmd Ping dans une nouvelle fenêtre DOS.

Mon désir serait de fermer le sous-script une fois que le ping est lancé.

Merci

Avatar
Georges MAUREL
Bonjour,
En fait il ne faudrait pas passer par un sous-script et remplacer le dernier
paramètres par False dans l'appel de la commande cmd
Cela économiserait la mémoire.

Cordialement
Georges


"Ziggy" <tpmsn2004nospam]@nospamfree.fr> a écrit dans le message de
news:
Je ne sais pas si j'ai bien compris votre problème, mais si vous désirez
garder les fênetres de commande ouvertes à la fin de l'exécution du
ping,


vous devez remplacer /c par /K dans la ligne de l'appel à cmd



Non c'est pas ça.
Mon premier script boucle sur une plage d'adresses max 254 hosts
A chaque boucle, il lance un wscript en mémoire d'environ 6Mo donc 6Mo x
254

= 1524Mo
Le sous-script lance Cmd Ping dans une nouvelle fenêtre DOS.

Mon désir serait de fermer le sous-script une fois que le ping est lancé.

Merci






Avatar
Georges MAUREL
Re bonjour,
Comme je le disais dans ma réponse précédente, en remplaçant le dernier
paramètre de True à False le sous-script se termine mais la fenêtre DOS
reste ouverte
Ce paramètre indique si le script attend un retour de la commande, ce qui
n'est pas le cas ici

Cordialement
Georges


"Ziggy" <tpmsn2004nospam]@nospamfree.fr> a écrit dans le message de
news:
Je ne sais pas si j'ai bien compris votre problème, mais si vous désirez
garder les fênetres de commande ouvertes à la fin de l'exécution du
ping,


vous devez remplacer /c par /K dans la ligne de l'appel à cmd



Non c'est pas ça.
Mon premier script boucle sur une plage d'adresses max 254 hosts
A chaque boucle, il lance un wscript en mémoire d'environ 6Mo donc 6Mo x
254

= 1524Mo
Le sous-script lance Cmd Ping dans une nouvelle fenêtre DOS.

Mon désir serait de fermer le sous-script une fois que le ping est lancé.

Merci






Avatar
Major TOM
Georges,

Je ne connaissait pas l'action de cette valeur. En tout cas selon vos conseils,
un seul script et False, cela marche comme je veux.

Merci

--

Par avance, merci de votre aide.

Thierry
"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message de news:

Re bonjour,
Comme je le disais dans ma réponse précédente, en remplaçant le dernier
paramètre de True à False le sous-script se termine mais la fenêtre DOS
reste ouverte
Ce paramètre indique si le script attend un retour de la commande, ce qui
n'est pas le cas ici

Cordialement
Georges


"Ziggy" <tpmsn2004nospam]@nospamfree.fr> a écrit dans le message de
news:
Je ne sais pas si j'ai bien compris votre problème, mais si vous désirez
garder les fênetres de commande ouvertes à la fin de l'exécution du
ping,


vous devez remplacer /c par /K dans la ligne de l'appel à cmd



Non c'est pas ça.
Mon premier script boucle sur une plage d'adresses max 254 hosts
A chaque boucle, il lance un wscript en mémoire d'environ 6Mo donc 6Mo x
254

= 1524Mo
Le sous-script lance Cmd Ping dans une nouvelle fenêtre DOS.

Mon désir serait de fermer le sous-script une fois que le ping est lancé.

Merci