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 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
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 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > 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 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
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 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > 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