Mettre une limite gestionnaire des tâches ?

Résolu/Fermé
Snowmann
Messages postés
227
Date d'inscription
samedi 14 octobre 2017
Statut
Membre
Dernière intervention
6 décembre 2020
- 24 févr. 2018 à 20:31
Snowmann
Messages postés
227
Date d'inscription
samedi 14 octobre 2017
Statut
Membre
Dernière intervention
6 décembre 2020
- 3 mars 2018 à 20:38
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.

2 réponses

barnabe0057
Messages postés
13969
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
14 août 2022
4 811
27 févr. 2018 à 20:03
Bonjour,

Ca doit être faisable avec un batch, j'ai en stock quelque chose d'approchant.

0
Snowmann
Messages postés
227
Date d'inscription
samedi 14 octobre 2017
Statut
Membre
Dernière intervention
6 décembre 2020
2
27 févr. 2018 à 20:34
Euhh merci...? Pourrais-je accéder à ton stock ? ^^
0
barnabe0057
Messages postés
13969
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
14 août 2022
4 811 > Snowmann
Messages postés
227
Date d'inscription
samedi 14 octobre 2017
Statut
Membre
Dernière intervention
6 décembre 2020

Modifié le 27 févr. 2018 à 22:48
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.
0
Snowmann
Messages postés
227
Date d'inscription
samedi 14 octobre 2017
Statut
Membre
Dernière intervention
6 décembre 2020
2
28 févr. 2018 à 10:57
Merci beaucoup pour ta réponse ! Donc je lance ce batch avant de lancer des loops et en fonction du nombre que j'ai mis dans "set maxi=" s'il y a des batch au dessus de cette limite ils vont être supprimés...? Est-ce bien ça ?
0
oui c'est bien ça
0
Snowmann
Messages postés
227
Date d'inscription
samedi 14 octobre 2017
Statut
Membre
Dernière intervention
6 décembre 2020
2
28 févr. 2018 à 16:55
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.
0
barnabe0057
Messages postés
13969
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
14 août 2022
4 811
1 mars 2018 à 22:36
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

0
Snowmann
Messages postés
227
Date d'inscription
samedi 14 octobre 2017
Statut
Membre
Dernière intervention
6 décembre 2020
2
1 mars 2018 à 22:40
Non non je n'ai qu'un explorer mais il faudrait protéger tout ce qui n'est pas un batch ou vbs non ? Parce qu'après avoir lancé le script et relancé explorer ma barre des tâches et mes raccourcis ne fonctionnaient plus non plus donc il y a du avoir une incidence j'imagine...?
0
barnabe0057
Messages postés
13969
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
14 août 2022
4 811 > Snowmann
Messages postés
227
Date d'inscription
samedi 14 octobre 2017
Statut
Membre
Dernière intervention
6 décembre 2020

2 mars 2018 à 05:55
Non aucune incidence à priori.

Pas besoin de tout protéger, la plupart des processus essentiels au système ne se lancent qu'une ou deux fois, sauf le processus svchost.exe

Si l'envie t'en prend, tu peux toujours rajouter des processus à protéger dans la commande set filtre
0
Snowmann
Messages postés
227
Date d'inscription
samedi 14 octobre 2017
Statut
Membre
Dernière intervention
6 décembre 2020
2
3 mars 2018 à 20:38
Mmmmh dans un certain sens ça marche mais bon, je vais plutôt rester sur mes gardes pour les loops mais un grand merci pour ton aide et le temps que tu y as pris !
0