2008-08-29 4 views
88

Donc, chaque fois que j'allume ma machine de développement appartenant à l'entreprise, je dois tuer plus de 10 processus en utilisant le gestionnaire de tâches ou toute autre application de gestion de processus juste pour obtenir des performances décentes de mon IDE. Oui, ce sont des processus de programmes que mon entreprise installe sur ma machine pour la sécurité et la conformité. Ce que je voudrais faire est d'avoir un fichier .bat ou un script quelconque que je peux déclencher et tuer les processus en question.Un moyen d'écrire un fichier Windows .bat pour tuer les processus?

Quelqu'un sait déjà comment faire?

+0

Cela devrait être pratique aussi quand dans un environnement d'automatisation et un sous-processus de fuite doit être terminé s'il ne parvient pas à finir ou répondre dans un laps de temps décent. –

+0

J'ai posté ce lien de question à tous mes collègues directs parce que nous sommes autour de 20 développeurs S/W dans une entreprise avec un ingénieur rond-point de 2000 (faisant CAD). Nous sommes en permanence aux prises avec le département informatique parce que (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épondre

129

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 aussi le faire à la 'force' kill:

taskkill/f/im somecorporateprocess.exe

Ajoutez simplement 1 ligne par processus que vous voulez tuer, enregistrez-la en tant que fichier .bat et insérez-la dans votre répertoire de démarrage. Problème résolu! Si c'est un système hérité, PsKill fera la même chose.

+23

LOL - "somecorporateprocess.exe" Cela résume assez bien la déconnexion de l'informatique d'entreprise des équipes de développeurs. – maplemale

+5

J'ai réussi à utiliser 'taskkill/F/IM ​​/ T' pour forcer la fermeture de * tous * les processus par leur nom. – Benj

3

Télécharger PSKill. Ecrire un fichier batch qui l'appelle pour chaque processus que vous voulez mort, en passant le nom du processus pour chacun.

102
taskkill /f /im "devenv.exe" 

cela force tuer le pid avec le nom exe "devenv.exe"

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

+3

Cela ne fonctionnait pas jusqu'à ce que j'ajoute l'indicateur/f à la commande. Je vous remercie! –

+4

Cela va tuer les entrées ** ALL ** avec le nom fourni. Particulièrement utile quand un programme se retourne contre vous et ouvre le fichier notepad.exe 1000 fois en arrière-plan:] \ * ahem \ * –

1

Utilisez Powershell! Des cmdlets intégrées pour gérer les processus. Examples here (façon difficile), here (intégré) et here (plus).

5

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

4

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

3

Comme TASKKILL pourrait être indisponible sur certaines éditions de Windows Home/base ici quelques alternatives:

TSKILL processName 

ou

TSKILL PID 

ont à l'esprit que processName ne devrait pas avoir le suffixe .exe et est limité à 18 caractères.

Une autre option est WMIC: vous pouvez filtrer

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

offre wmic encore plus de flexibilité que taskkill .Avec wmic Path win32_process get vous pouvez voir les fileds disponibles.

0

Veuillez trouver ci-dessous la logique où cela fonctionne sur l'état.

Si nous appelons simplement taskkill /im applicationname.exe, il ne tue que si ce processus est en cours d'exécution. Si ce processus n'est pas en cours d'exécution, il y aura une erreur. Pour vérifier que takskill est appelée, une vérification peut être effectuée pour s'assurer que l'exécution taskkill sera exécutée uniquement si le processus est en cours d'exécution, afin de ne pas lancer d'erreur.

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

if errorlevel 1 taskkill /f /im "applicationname.exe" 
+0

plus facile de simplement rediriger le message d'erreur de 'taskkill' à' nul' – Stephan

0

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

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

Le pour seulement prend toutes les PID s figurant sur la ci-dessous commande tasklist et exécute TASKKILL /PID sur chaque PID

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

Si vous utilisez le dans un fichier batch il suffit d'utiliser %% P au lieu de % P

Questions connexes