Mettre une limite gestionnaire des tâches ?
Résolu
Snowmann
Messages postés
239
Statut
Membre
-
Snowmann Messages postés 239 Statut Membre -
Snowmann Messages postés 239 Statut Membre -
Bonjour, étant donné que je fais de temps en temps des scripts batch avec des boucles loop, il est possible que par mégarde je lance un batch où une application ou simplement un un fichier ou autre d'ouvre donc en boucle infinie et risque fortement de faire bugger l'ordinateur voir le faire cracher. Est-il alors possible de mettre une limite de pages ouvertes dans le gestionnaire des tâches ? C'est à dire, par exemple si 50 fenêtres cmd se sont ouvertes (ce qui n'est pas normal), le gestionnaire bloque de nouvelles ouvertures.
Je suis ouvert à toutes réponses voire d'autres solutions.
Merci,
Snowmann.
Je suis ouvert à toutes réponses voire d'autres solutions.
Merci,
Snowmann.
2 réponses
-
Bonjour,
Ca doit être faisable avec un batch, j'ai en stock quelque chose d'approchant.
-
-
Voilà le code adapté spécialement pour toi :
@echo off
mode con: cols=85 lines=35
setlocal enableextensions enabledelayedexpansion
title Snowmann
color 0A
set fichier=.bat .exe
set maxi=50
:debut
cls
for /f "tokens=1" %%A in ('tasklist ^| sort') do (
(echo.%%~A | findstr "%fichier%") && (call :comptage "%%~A")
)
timeout /t 3
goto :debut
endlocal
exit /B 0
:comptage
set /a nombre=0
for /f "tokens=1" %%E in ('tasklist ^| find "%~1"') do (set /a nombre+=1)
if !nombre! GTR %maxi% (call :processus "%~1")
goto :eof
:processus
taskkill /IM "%~1" /T /F && call :processus "%~1"
goto :eof
rem
A toi d'ajuster set fichier= et set maxi= à ta convenance. -
-
-
Mais dans ce cas tous les applications donc en .exe vont aussi être fermées ? Les processus affichés dans le gestionnaire des tâches pour les .bat ou .vbs sont en fait en .exe car lancés avec conhost.exe ou wscript.exe non ?
Pour l'instant ça ne marche pas pour moi en tout cas... A la recherche du problème.
-
-
Voilà une nouvelle version avec une protection intégrée, cela empêche explorer.exe d'être "tuer" :
@echo off
mode con: cols=85 lines=35
setlocal enableextensions enabledelayedexpansion
title Snowmann
color 0A
set maxi=12
set filtre=svchost explorer
:debut
cls
for /f "tokens=1" %%A in ('tasklist ^| sort') do (
(echo.%%~A | findstr /V "%filtre%") && (call :comptage "%%~A")
)
timeout /t 2
goto :debut
endlocal
exit /B 0
:comptage
set /a nombre=0
for /f "tokens=1" %%E in ('tasklist ^| find "%~1"') do (set /a nombre+=1)
if !nombre! GTR %maxi% (call :processus "%~1")
goto :eof
:processus
2>nul taskkill /IM "%~1" /T /F && call :processus "%~1"
goto :eof
rem