Un moyen d'écrire un fichier .bat Windows pour tuer les processus? [fermé]

114

Chaque fois que j'allume la machine de développement de ma société, je dois tuer plus de 10 processus à l'aide du gestionnaire de tâches ou de toute autre application de gestion de processus juste pour obtenir des performances décentes de mon IDE. Oui, il s'agit de processus issus de programmes que mon entreprise installe sur ma machine à des fins de sécurité et de conformité. Ce que j'aimerais faire, c'est avoir un fichier .bat ou un script quelconque avec lequel je peux tuer les processus en question.

Est-ce que quelqu'un sait comment faire ça?

codeLes
la source
Cela devrait également être pratique lorsque, dans un environnement d'automatisation, un sous-processus de fuite doit être interrompu s'il ne parvient pas à se terminer ou à répondre dans un laps de temps décent.
Danny Staple
J'ai posté ce lien de question à tous mes collègues directs car nous sommes un rond-point 20 développeurs S / W dans une entreprise avec un rond-point 2000 ingénieurs (faisant de la CAO). Nous luttons en permanence avec le département d'administration informatique car (en raison de la politique de sécurité) nous sommes presque incapables de faire notre travail ... (cela n'aide pas techniquement mais c'est agréable d'entendre que d'autres développeurs S / W semblent avoir des problèmes similaires .)
Scheff

Réponses:

171

Vous pouvez le faire avec « taskkill ». Avec le paramètre / IM, vous pouvez spécifier des noms d'image.

Exemple:

taskkill /im somecorporateprocess.exe

Vous pouvez également le faire pour `` forcer '' tuer:

Exemple:

taskkill /f /im somecorporateprocess.exe

Ajoutez simplement une ligne par processus que vous souhaitez supprimer, enregistrez-la en tant que fichier .bat et ajoutez-la dans votre répertoire de démarrage. Problème résolu!

S'il s'agit d'un ancien système, PsKill fera de même.

Facteur Mystique
la source
34
LOL - "somecorporateprocess.exe" résume assez bien la déconnexion de l'informatique d'entreprise avec les équipes de développement.
maplemale
8
J'ai eu du succès en utilisant taskkill /F /IM <processname.exe> /Tpour forcer la fermeture de tous les processus par leur nom.
Benj
ne fonctionne pas sur win10 pour le processus de suppression des arrière-plans. tout le processus d'arrière-plan dans win 10 nommé RuntimeBroker.exeet quand essayez de tuer rien ne s'est passé.
Mostafa
106
taskkill /f /im "devenv.exe"

cela tuera de force le pid avec le nom exe "devenv.exe"

équivalent à -9 sur la commande nix'y kill

DévelopperChris
la source
3
Cela n'a pas fonctionné jusqu'à ce que j'aie ajouté l'indicateur / f à la commande. Je vous remercie!
Denis M. Kitchen
4
Cela tuera TOUTES les entrées avec le nom fourni. Particulièrement pratique lorsqu'un programme se retourne contre lui et ouvre notepad.exe 1000 fois en arrière-plan:] * ahem *
Richard de Wit
8

Comme TASKKILL peut ne pas être disponible sur certaines éditions Home / Basic de Windows, voici quelques alternatives:

TSKILL processName

ou

TSKILL PID

Gardez à l'esprit que cela processNamene devrait pas avoir le .exesuffixe et est limité à 18 caractères.

Une autre option est WMIC:

wmic Path win32_process Where "Caption Like 'MyProcess%.exe'" Call Terminate

wmic offre encore plus de flexibilité que taskkill avec ses correspondants de type SQL. Avec wmic Path win32_process getvous pouvez voir les fichiers disponibles, vous pouvez filtrer (et %peut être utilisé comme un caractère générique).

npocmaka
la source
5

Je suppose qu'en tant que développeur, vous avez un certain contrôle administratif sur votre machine. Si tel est le cas, à partir de la ligne de commande, exécutez msconfig.exe. Vous pouvez supprimer de nombreux processus même du démarrage, éliminant ainsi le besoin de les tuer avec les solutions mentionnées ci-dessus.

Jason Z
la source
5

Obtenez Autoruns de Mark Russinovich, le gars de Sysinternals qui a découvert le Sony Rootkit ... Le meilleur logiciel que j'ai jamais utilisé pour nettoyer les choses qui démarrent automatiquement.

Brian Stewart
la source
4

Téléchargez PSKill . Écrivez un fichier de commandes qui l'appelle pour chaque processus que vous voulez mort, en passant le nom du processus pour chacun.

Shog9
la source
1

Utilisez Powershell! Des applets de commande intégrées pour gérer les processus. Exemples ici (durement), ici (intégré) et ici (plus).

slipsec
la source
0

Veuillez trouver la logique ci-dessous où cela fonctionne sur la condition.

Si nous appelons simplement taskkill /im applicationname.exe, cela ne tuera que si ce processus est en cours d'exécution. Si ce processus n'est pas en cours d'exécution, il générera une erreur.

Afin de vérifier avant d' takskillêtre appelé, une vérification peut être effectuée pour s'assurer que l'exécution taskkillne sera exécutée que si le processus est en cours d'exécution, afin qu'il ne génère pas d'erreur.

tasklist /fi "imagename eq applicationname.exe" |find ":" > nul

if errorlevel 1 taskkill /f /im "applicationname.exe"
Sarath Avanavu
la source
1
plus facile de simplement rediriger le message d'erreur de taskkillversnul
Stephan
0

Ici, j'ai écrit un exemple de commande que vous pouvez coller dans votre cmdinvite de ligne de commande et est écrit pour chrome.exe.

FOR /F "tokens=2 delims= " %P IN ('tasklist /FO Table /M "chrome*" /NH') DO (TASKKILL /PID %P)

Le for prend juste tous les PIDs listés dans la tasklistcommande ci-dessous et s'exécute TASKKILL /PIDà chaquePID

tasklist /FO Table /M "chrome*" /NH

Si vous utilisez for dans un fichier batch, utilisez simplement %% P au lieu de% P

Eduard Florinescu
la source