Un super script promotionnel (et trollesque) Batch
44 réponses
Do Re Mi chel La Si Do
Bonjour !
Je vous ai concocté le script ci-dessous, pour montrer l'incroyable
supériorité du Batch, sur tous les autres langages de script (y compris le
Verlan). Seul Python, AutoIt! et l'Occitan peuvent faire aussi bien.
J'attend, d'ailleurs, les réactions épidermiques, et, forcément partiales
(normal ; yakemoi qui suis, par hypothèse, impartial).
Bref, que fait ce script ? Hé bien, il verrouille un site, par son adresse
IP et un port. Dès que l'on veut s'y connecter, le process est tué (dans les
2 secondes).
Pour tester, j'ai mis l'adresse IP d'un de mes sites : http://ponx.org
Lancez le script dans une invite de commande ; lancez I.E. ; allez sur
http://ponx.org ; constatez.
@+
MCI
PS : le script est prévu pour Windows-XP-Pro en français.
Voilà le script :
@echo off
:: Supprime les process qui se connectent à une adresse IP
set IPDEL=213.186.47.206:80
:: pour tester : http://ponx.org
:SCAN
set PID=
netstat -ano |find "%IPDEL%" >TEMP.TXT
for /F "usebackq tokens=*" %%i in (TEMP.TXT) do (call :STO %%i)
if X%PID%X==XX goto :CONTINUE
call :TRAIT %PID%
:CONTINUE
sleepm 2000
goto :SCAN
Effectivement, il y a plein d'accolades. Il y a aussi beaucoup de dollars. On voit bien que Bill Gates ne sait pas quoi en faire (de ses dollars) ;-)
Pour Python, je l'ai fait (voir le message de 19h.37)
Je vais le ré-écrire en AutoIt! pour voir
Sinon, pour les expressions régulières, moi non plus, je ne suis pas très à l'aise (je n'ai toujours pas pigé le principe de gloutonnerie des algorithmes).
Et, pour VBS, il y aura bien quelqu'un qui n'a pas d'ampoule grillée...
@-salutations
Michel Claveau
Bon dimanche !
Effectivement, il y a plein d'accolades. Il y a aussi beaucoup de dollars.
On voit bien que Bill Gates ne sait pas quoi en faire (de ses dollars) ;-)
Pour Python, je l'ai fait (voir le message de 19h.37)
Je vais le ré-écrire en AutoIt! pour voir
Sinon, pour les expressions régulières, moi non plus, je ne suis pas très à
l'aise (je n'ai toujours pas pigé le principe de gloutonnerie des
algorithmes).
Et, pour VBS, il y aura bien quelqu'un qui n'a pas d'ampoule grillée...
Effectivement, il y a plein d'accolades. Il y a aussi beaucoup de dollars. On voit bien que Bill Gates ne sait pas quoi en faire (de ses dollars) ;-)
Pour Python, je l'ai fait (voir le message de 19h.37)
Je vais le ré-écrire en AutoIt! pour voir
Sinon, pour les expressions régulières, moi non plus, je ne suis pas très à l'aise (je n'ai toujours pas pigé le principe de gloutonnerie des algorithmes).
Et, pour VBS, il y aura bien quelqu'un qui n'a pas d'ampoule grillée...
@-salutations
Michel Claveau
Jacques Barathon [MS]
"Do Re Mi chel La Si Do" wrote in message news:%
Bon dimanche !
Effectivement, il y a plein d'accolades. Il y a aussi beaucoup de dollars. On voit bien que Bill Gates ne sait pas quoi en faire (de ses dollars) ;-)
En effet, le $ est notamment utilisé pour préfixer les variables, c'est un peu comme % dans les fichiers de commandes batch. Et pourtant Microsoft n'est pas payé au pourcentage sur le nombre de variables utilisées dans les batch, sinon Bill serait ENCORE plus riche qu'il ne l'est! :-)
Pour Python, je l'ai fait (voir le message de 19h.37)
Ah je vois, tu as un peu triché en déléguant quelques tâches à l'invite de commandes... Pourquoi pas. D'ailleurs en relisant le mien de script, je me rends compte qu'il n'était vraiment pas optimisé. On peut le réécrire ainsi:
for (;;) { $myline=$(netstat -ano|where {$_ -match $ipdel}) if ($myline) { $procid=$($myline.split()[-1] if ($procid) {(gps -id $procid).kill()} } start-sleep 20 }
Je vais le ré-écrire en AutoIt! pour voir
Ca m'intéresserait de voir.
Jacques
"Do Re Mi chel La Si Do" <enleverlesO.OmcO@OmclaveauO.com> wrote in message
news:%23f01NKrtFHA.1028@TK2MSFTNGP12.phx.gbl...
Bon dimanche !
Effectivement, il y a plein d'accolades. Il y a aussi beaucoup de dollars.
On voit bien que Bill Gates ne sait pas quoi en faire (de ses dollars) ;-)
En effet, le $ est notamment utilisé pour préfixer les variables, c'est un
peu comme % dans les fichiers de commandes batch. Et pourtant Microsoft
n'est pas payé au pourcentage sur le nombre de variables utilisées dans les
batch, sinon Bill serait ENCORE plus riche qu'il ne l'est! :-)
Pour Python, je l'ai fait (voir le message de 19h.37)
Ah je vois, tu as un peu triché en déléguant quelques tâches à l'invite de
commandes... Pourquoi pas.
D'ailleurs en relisant le mien de script, je me rends compte qu'il n'était
vraiment pas optimisé. On peut le réécrire ainsi:
for (;;) {
$myline=$(netstat -ano|where {$_ -match $ipdel})
if ($myline) {
$procid=$($myline.split()[-1]
if ($procid) {(gps -id $procid).kill()}
}
start-sleep 20
}
Effectivement, il y a plein d'accolades. Il y a aussi beaucoup de dollars. On voit bien que Bill Gates ne sait pas quoi en faire (de ses dollars) ;-)
En effet, le $ est notamment utilisé pour préfixer les variables, c'est un peu comme % dans les fichiers de commandes batch. Et pourtant Microsoft n'est pas payé au pourcentage sur le nombre de variables utilisées dans les batch, sinon Bill serait ENCORE plus riche qu'il ne l'est! :-)
Pour Python, je l'ai fait (voir le message de 19h.37)
Ah je vois, tu as un peu triché en déléguant quelques tâches à l'invite de commandes... Pourquoi pas. D'ailleurs en relisant le mien de script, je me rends compte qu'il n'était vraiment pas optimisé. On peut le réécrire ainsi:
for (;;) { $myline=$(netstat -ano|where {$_ -match $ipdel}) if ($myline) { $procid=$($myline.split()[-1] if ($procid) {(gps -id $procid).kill()} } start-sleep 20 }
Je vais le ré-écrire en AutoIt! pour voir
Ca m'intéresserait de voir.
Jacques
~Jean-Marc~ [MVP]
Salutations *Jacques Barathon [MS]* ! Dans <news: tu nous disais :
Qui le fait en VBS et en Python, qu'on puisse comparer?
OK pour le VBS :
' Uniquement avec cscript
On error resume next
Const IPDel = "213.186.47.206:80"
Set Shell = CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!.rootcimv2")
Do While True
Set oExec = Shell.Exec("netstat -no")
Do While Not oExec.StdOut.AtEndOfStream NStat = oExec.StdOut.ReadLine if instr(1, NStat, IPDel,1) then NStat = split(NStat," ") KillID = NStat(UBound(Nstat)) Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process Where " & _ "Name = 'iexplore.exe' AND " & _ "ProcessID = " & KillID) For Each objProcess in colProcessList objProcess.Terminate() Next end if Loop
WScript.Sleep 2000 Loop
Cordialement
-- ~Jean-Marc~ MSAE & MVP Windows XP Fr M'écrire : http://msmvps.com/docxp/contact.aspx - http://docxp.mvps.org - http://msmvps.com/docxp/ - Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/
Salutations *Jacques Barathon [MS]* !
Dans <news:Ob6BoPqtFHA.3528@TK2MSFTNGP15.phx.gbl>
tu nous disais :
Qui le fait en VBS et en Python, qu'on puisse comparer?
OK pour le VBS :
' Uniquement avec cscript
On error resume next
Const IPDel = "213.186.47.206:80"
Set Shell = CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\.rootcimv2")
Do While True
Set oExec = Shell.Exec("netstat -no")
Do While Not oExec.StdOut.AtEndOfStream
NStat = oExec.StdOut.ReadLine
if instr(1, NStat, IPDel,1) then
NStat = split(NStat," ")
KillID = NStat(UBound(Nstat))
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where " & _
"Name = 'iexplore.exe' AND " & _
"ProcessID = " & KillID)
For Each objProcess in colProcessList
objProcess.Terminate()
Next
end if
Loop
WScript.Sleep 2000
Loop
Cordialement
--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/
Salutations *Jacques Barathon [MS]* ! Dans <news: tu nous disais :
Qui le fait en VBS et en Python, qu'on puisse comparer?
OK pour le VBS :
' Uniquement avec cscript
On error resume next
Const IPDel = "213.186.47.206:80"
Set Shell = CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!.rootcimv2")
Do While True
Set oExec = Shell.Exec("netstat -no")
Do While Not oExec.StdOut.AtEndOfStream NStat = oExec.StdOut.ReadLine if instr(1, NStat, IPDel,1) then NStat = split(NStat," ") KillID = NStat(UBound(Nstat)) Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process Where " & _ "Name = 'iexplore.exe' AND " & _ "ProcessID = " & KillID) For Each objProcess in colProcessList objProcess.Terminate() Next end if Loop
WScript.Sleep 2000 Loop
Cordialement
-- ~Jean-Marc~ MSAE & MVP Windows XP Fr M'écrire : http://msmvps.com/docxp/contact.aspx - http://docxp.mvps.org - http://msmvps.com/docxp/ - Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/
Jacques Barathon [MS]
Hé oui, c'est très verbieux VBS...
Merci Jean-Marc.
Jacques
"~Jean-Marc~ [MVP]" wrote in message news:u%
Salutations *Jacques Barathon [MS]* ! Dans <news: tu nous disais :
Qui le fait en VBS et en Python, qu'on puisse comparer?
OK pour le VBS :
' Uniquement avec cscript
On error resume next
Const IPDel = "213.186.47.206:80"
Set Shell = CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!.rootcimv2")
Do While True
Set oExec = Shell.Exec("netstat -no")
Do While Not oExec.StdOut.AtEndOfStream NStat = oExec.StdOut.ReadLine if instr(1, NStat, IPDel,1) then NStat = split(NStat," ") KillID = NStat(UBound(Nstat)) Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process Where " & _ "Name = 'iexplore.exe' AND " & _ "ProcessID = " & KillID) For Each objProcess in colProcessList objProcess.Terminate() Next end if Loop
WScript.Sleep 2000 Loop
Cordialement
-- ~Jean-Marc~ MSAE & MVP Windows XP Fr M'écrire : http://msmvps.com/docxp/contact.aspx - http://docxp.mvps.org - http://msmvps.com/docxp/ - Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/
Hé oui, c'est très verbieux VBS...
Merci Jean-Marc.
Jacques
"~Jean-Marc~ [MVP]" <doc.j-m.OTER@ouanadoudou.fr> wrote in message
news:u%23AxWdrtFHA.2912@TK2MSFTNGP09.phx.gbl...
Salutations *Jacques Barathon [MS]* !
Dans <news:Ob6BoPqtFHA.3528@TK2MSFTNGP15.phx.gbl>
tu nous disais :
Qui le fait en VBS et en Python, qu'on puisse comparer?
OK pour le VBS :
' Uniquement avec cscript
On error resume next
Const IPDel = "213.186.47.206:80"
Set Shell = CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\.rootcimv2")
Do While True
Set oExec = Shell.Exec("netstat -no")
Do While Not oExec.StdOut.AtEndOfStream
NStat = oExec.StdOut.ReadLine
if instr(1, NStat, IPDel,1) then
NStat = split(NStat," ")
KillID = NStat(UBound(Nstat))
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where " & _
"Name = 'iexplore.exe' AND " & _
"ProcessID = " & KillID)
For Each objProcess in colProcessList
objProcess.Terminate()
Next
end if
Loop
WScript.Sleep 2000
Loop
Cordialement
--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/
Salutations *Jacques Barathon [MS]* ! Dans <news: tu nous disais :
Qui le fait en VBS et en Python, qu'on puisse comparer?
OK pour le VBS :
' Uniquement avec cscript
On error resume next
Const IPDel = "213.186.47.206:80"
Set Shell = CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!.rootcimv2")
Do While True
Set oExec = Shell.Exec("netstat -no")
Do While Not oExec.StdOut.AtEndOfStream NStat = oExec.StdOut.ReadLine if instr(1, NStat, IPDel,1) then NStat = split(NStat," ") KillID = NStat(UBound(Nstat)) Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process Where " & _ "Name = 'iexplore.exe' AND " & _ "ProcessID = " & KillID) For Each objProcess in colProcessList objProcess.Terminate() Next end if Loop
WScript.Sleep 2000 Loop
Cordialement
-- ~Jean-Marc~ MSAE & MVP Windows XP Fr M'écrire : http://msmvps.com/docxp/contact.aspx - http://docxp.mvps.org - http://msmvps.com/docxp/ - Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/
Do Re Mi chel La Si Do
Bonjour !
Intéressant. Mais, au lieu d'utiliser WMI, tu aurais pu wrapper TaskKill ; cela aurait été plus court et plus lisible (mais moins techno-frime).
Sinon, je pense qu'une sélection sur le PID seul, aurait été suffisante (et plus générale) ; au lieu d'utiliser 'iexplore.exe' comme critère (il paraît qu'il y a des gens qui utilisent d'autres navigateurs...)
@-salutations
Michel Claveau
Bonjour !
Intéressant. Mais, au lieu d'utiliser WMI, tu aurais pu wrapper TaskKill ;
cela aurait été plus court et plus lisible (mais moins techno-frime).
Sinon, je pense qu'une sélection sur le PID seul, aurait été suffisante (et
plus générale) ; au lieu d'utiliser 'iexplore.exe' comme critère (il paraît
qu'il y a des gens qui utilisent d'autres navigateurs...)
Intéressant. Mais, au lieu d'utiliser WMI, tu aurais pu wrapper TaskKill ; cela aurait été plus court et plus lisible (mais moins techno-frime).
Sinon, je pense qu'une sélection sur le PID seul, aurait été suffisante (et plus générale) ; au lieu d'utiliser 'iexplore.exe' comme critère (il paraît qu'il y a des gens qui utilisent d'autres navigateurs...)
@-salutations
Michel Claveau
Jacques Barathon [MS]
"Do Re Mi chel La Si Do" wrote in message news:
Bonjour !
Intéressant. Mais, au lieu d'utiliser WMI, tu aurais pu wrapper TaskKill ; cela aurait été plus court et plus lisible (mais moins techno-frime).
L'avantage de la solution vbs+WMI est qu'elle est la plus compatible en nombre de plateformes supportées. Si tu utilises taskkill, tu te restreins à XP ou Server 2003.
Sinon, je pense qu'une sélection sur le PID seul, aurait été suffisante (et plus générale) ; au lieu d'utiliser 'iexplore.exe' comme critère (il paraît qu'il y a des gens qui utilisent d'autres navigateurs...)
Il paraît :-)
"Do Re Mi chel La Si Do" <enleverlesO.OmcO@OmclaveauO.com> wrote in message
news:uTQ9QGstFHA.1596@TK2MSFTNGP10.phx.gbl...
Bonjour !
Intéressant. Mais, au lieu d'utiliser WMI, tu aurais pu wrapper TaskKill
; cela aurait été plus court et plus lisible (mais moins techno-frime).
L'avantage de la solution vbs+WMI est qu'elle est la plus compatible en
nombre de plateformes supportées. Si tu utilises taskkill, tu te restreins à
XP ou Server 2003.
Sinon, je pense qu'une sélection sur le PID seul, aurait été suffisante
(et plus générale) ; au lieu d'utiliser 'iexplore.exe' comme critère (il
paraît qu'il y a des gens qui utilisent d'autres navigateurs...)
Intéressant. Mais, au lieu d'utiliser WMI, tu aurais pu wrapper TaskKill ; cela aurait été plus court et plus lisible (mais moins techno-frime).
L'avantage de la solution vbs+WMI est qu'elle est la plus compatible en nombre de plateformes supportées. Si tu utilises taskkill, tu te restreins à XP ou Server 2003.
Sinon, je pense qu'une sélection sur le PID seul, aurait été suffisante (et plus générale) ; au lieu d'utiliser 'iexplore.exe' comme critère (il paraît qu'il y a des gens qui utilisent d'autres navigateurs...)
Il paraît :-)
Do Re Mi chel La Si Do
Re
Voilà une version en AutoIt! :
#include <Process.au3> While True _RunDos("netstat -ano |find ""213.186.47.206:80"" >TEMP.TXT") $arr=StringSplit (FileRead("TEMP.TXT",512)," ") $pid=StringTrimRight ($arr[$arr[0]],2) if $pid<>"" then ProcessClose($pid) endif sleep(2000) WEnd
Ce script n'est certainement pas optimisé. Mais je ne pratique AutoIt! qu'occasionnellement.
A cette occasion, je, à nouveau, réalisé que AutoIt! n'est pas fait pour scripter de la ligne de commande, mais plutôt, pour automatiser l'interface graphique de Windows. En témoigne, le nombre de fonctions pour identifier les fenêtres, leur contenu, leurs contrôles, etc.
Par contre, au script ci-dessus, on peut ajouter, assez facilement, des fioritures, comme : - le "compiler" en .exe - choisir l'icône de la barre des tâches, et gérer un menu sur cet icône (pour arrêter le script, par exemple) - afficher les blocages, dans un "tooltip" transparent, durant quelques secondes.
Bon dimanche
Michel Claveau
Re
Voilà une version en AutoIt! :
#include <Process.au3>
While True
_RunDos("netstat -ano |find ""213.186.47.206:80"" >TEMP.TXT")
$arr=StringSplit (FileRead("TEMP.TXT",512)," ")
$pid=StringTrimRight ($arr[$arr[0]],2)
if $pid<>"" then
ProcessClose($pid)
endif
sleep(2000)
WEnd
Ce script n'est certainement pas optimisé. Mais je ne pratique AutoIt!
qu'occasionnellement.
A cette occasion, je, à nouveau, réalisé que AutoIt! n'est pas fait pour
scripter de la ligne de commande, mais plutôt, pour automatiser l'interface
graphique de Windows. En témoigne, le nombre de fonctions pour identifier
les fenêtres, leur contenu, leurs contrôles, etc.
Par contre, au script ci-dessus, on peut ajouter, assez facilement, des
fioritures, comme :
- le "compiler" en .exe
- choisir l'icône de la barre des tâches, et gérer un menu sur cet icône
(pour arrêter le script, par exemple)
- afficher les blocages, dans un "tooltip" transparent, durant quelques
secondes.
#include <Process.au3> While True _RunDos("netstat -ano |find ""213.186.47.206:80"" >TEMP.TXT") $arr=StringSplit (FileRead("TEMP.TXT",512)," ") $pid=StringTrimRight ($arr[$arr[0]],2) if $pid<>"" then ProcessClose($pid) endif sleep(2000) WEnd
Ce script n'est certainement pas optimisé. Mais je ne pratique AutoIt! qu'occasionnellement.
A cette occasion, je, à nouveau, réalisé que AutoIt! n'est pas fait pour scripter de la ligne de commande, mais plutôt, pour automatiser l'interface graphique de Windows. En témoigne, le nombre de fonctions pour identifier les fenêtres, leur contenu, leurs contrôles, etc.
Par contre, au script ci-dessus, on peut ajouter, assez facilement, des fioritures, comme : - le "compiler" en .exe - choisir l'icône de la barre des tâches, et gérer un menu sur cet icône (pour arrêter le script, par exemple) - afficher les blocages, dans un "tooltip" transparent, durant quelques secondes.
Bon dimanche
Michel Claveau
~Jean-Marc~ [MVP]
Salutations *Do Re Mi chel La Si Do* ! Dans <news: tu nous disais :
Intéressant. Mais, au lieu d'utiliser WMI, tu aurais pu wrapper TaskKill ; cela aurait été plus court et plus lisible (mais moins techno-frime). Sinon, je pense qu'une sélection sur le PID seul, aurait été suffisante (et plus générale) ; au lieu d'utiliser 'iexplore.exe' comme critère (il paraît qu'il y a des gens qui utilisent d'autres navigateurs...)
Effectivement... Mais j'avais un bout de code qui trainait avec du WMI... ;-)
Allez, pour te faire plaisir :
' Uniquement avec cscript
On error resume next
Const IPDel = "213.186.47.206:80"
Set Shell = CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!.rootcimv2")
Do While True
Set oExec = Shell.Exec("netstat -no")
Do While Not oExec.StdOut.AtEndOfStream NStat = oExec.StdOut.ReadLine if instr(1, NStat, IPDel,1) then NStat = split(NStat," ") KillID = NStat(UBound(Nstat)) Set Ex = Shell.Exec("taskkill /PID " & KillID) end if Loop
WScript.Sleep 2000 Loop
@+
-- ~Jean-Marc~ MSAE & MVP Windows XP Fr M'écrire : http://msmvps.com/docxp/contact.aspx - http://docxp.mvps.org - http://msmvps.com/docxp/ - Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/
Salutations *Do Re Mi chel La Si Do* !
Dans <news:uTQ9QGstFHA.1596@TK2MSFTNGP10.phx.gbl>
tu nous disais :
Intéressant. Mais, au lieu d'utiliser WMI, tu aurais pu wrapper
TaskKill ; cela aurait été plus court et plus lisible (mais moins
techno-frime).
Sinon, je pense qu'une sélection sur le PID seul, aurait été
suffisante (et plus générale) ; au lieu d'utiliser 'iexplore.exe'
comme critère (il paraît qu'il y a des gens qui utilisent d'autres
navigateurs...)
Effectivement... Mais j'avais un bout de code qui trainait avec
du WMI... ;-)
Allez, pour te faire plaisir :
' Uniquement avec cscript
On error resume next
Const IPDel = "213.186.47.206:80"
Set Shell = CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\.rootcimv2")
Do While True
Set oExec = Shell.Exec("netstat -no")
Do While Not oExec.StdOut.AtEndOfStream
NStat = oExec.StdOut.ReadLine
if instr(1, NStat, IPDel,1) then
NStat = split(NStat," ")
KillID = NStat(UBound(Nstat))
Set Ex = Shell.Exec("taskkill /PID " & KillID)
end if
Loop
WScript.Sleep 2000
Loop
@+
--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/
Salutations *Do Re Mi chel La Si Do* ! Dans <news: tu nous disais :
Intéressant. Mais, au lieu d'utiliser WMI, tu aurais pu wrapper TaskKill ; cela aurait été plus court et plus lisible (mais moins techno-frime). Sinon, je pense qu'une sélection sur le PID seul, aurait été suffisante (et plus générale) ; au lieu d'utiliser 'iexplore.exe' comme critère (il paraît qu'il y a des gens qui utilisent d'autres navigateurs...)
Effectivement... Mais j'avais un bout de code qui trainait avec du WMI... ;-)
Allez, pour te faire plaisir :
' Uniquement avec cscript
On error resume next
Const IPDel = "213.186.47.206:80"
Set Shell = CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!.rootcimv2")
Do While True
Set oExec = Shell.Exec("netstat -no")
Do While Not oExec.StdOut.AtEndOfStream NStat = oExec.StdOut.ReadLine if instr(1, NStat, IPDel,1) then NStat = split(NStat," ") KillID = NStat(UBound(Nstat)) Set Ex = Shell.Exec("taskkill /PID " & KillID) end if Loop
WScript.Sleep 2000 Loop
@+
-- ~Jean-Marc~ MSAE & MVP Windows XP Fr M'écrire : http://msmvps.com/docxp/contact.aspx - http://docxp.mvps.org - http://msmvps.com/docxp/ - Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/
Do Re Mi chel La Si Do
Re
Deux questions : - pourquoi dis-tu "seulement avec cscript ?" ; ça fonctionne bien en wscript... - avec netstat -no, au lieu de -ano, tu "sautes" UDP ; c'est voulu ? - l'utilisation de ReadLine est intéressante, car elle élimine le séparateur de ligne final ; mais tous les langages ne se comportent pas pareillement. - pourquoi ai-je parlé de "deux" questions ?
MCI
Re
Deux questions :
- pourquoi dis-tu "seulement avec cscript ?" ; ça fonctionne bien en
wscript...
- avec netstat -no, au lieu de -ano, tu "sautes" UDP ; c'est voulu ?
- l'utilisation de ReadLine est intéressante, car elle élimine le
séparateur de ligne final ; mais tous les langages ne se comportent pas
pareillement.
- pourquoi ai-je parlé de "deux" questions ?
Deux questions : - pourquoi dis-tu "seulement avec cscript ?" ; ça fonctionne bien en wscript... - avec netstat -no, au lieu de -ano, tu "sautes" UDP ; c'est voulu ? - l'utilisation de ReadLine est intéressante, car elle élimine le séparateur de ligne final ; mais tous les langages ne se comportent pas pareillement. - pourquoi ai-je parlé de "deux" questions ?
MCI
Do Re Mi chel La Si Do
Re-re
Une autre version en AutoIt! :
#include <Process.au3> while True _RunDos("netstat -ano |find ""213.186.47.206:80"" >TEMP.TXT") $arr=StringSplit (FileReadLine("TEMP.TXT")," ") $pid=$arr[$arr[0]] if $pid<>"" then ProcessClose($pid) endif sleep(2000) WEnd
J'ai simplement utilisé FileReadLine (idée de Jean-Marc), qui élimine le CR/LF final, comme en VBS. A noter que Python, avec readline() récupère la ligne AVEC le CRLF final, et donc n'est pas très intéressant.
MCI
Re-re
Une autre version en AutoIt! :
#include <Process.au3>
while True
_RunDos("netstat -ano |find ""213.186.47.206:80"" >TEMP.TXT")
$arr=StringSplit (FileReadLine("TEMP.TXT")," ")
$pid=$arr[$arr[0]]
if $pid<>"" then
ProcessClose($pid)
endif
sleep(2000)
WEnd
J'ai simplement utilisé FileReadLine (idée de Jean-Marc), qui élimine le
CR/LF final, comme en VBS. A noter que Python, avec readline() récupère la
ligne AVEC le CRLF final, et donc n'est pas très intéressant.
#include <Process.au3> while True _RunDos("netstat -ano |find ""213.186.47.206:80"" >TEMP.TXT") $arr=StringSplit (FileReadLine("TEMP.TXT")," ") $pid=$arr[$arr[0]] if $pid<>"" then ProcessClose($pid) endif sleep(2000) WEnd
J'ai simplement utilisé FileReadLine (idée de Jean-Marc), qui élimine le CR/LF final, comme en VBS. A noter que Python, avec readline() récupère la ligne AVEC le CRLF final, et donc n'est pas très intéressant.