web-dev-qa-db-fra.com

Comment arrêter un processus de chauve-souris sous Windows?

J'ai un fichier BAT qui tourne en arrière-plan sous Windows et dure environ dix minutes. Maintenant, je veux l'arrêter pendant son exécution, mais je ne trouve pas son nom dans la liste de processus du gestionnaire de tâches. Alors, comment puis-je aborder cela? Merci!

PDATE1

Il semble difficile d'arrêter un processus BAT en cours d'exécution dans le backgroud.Et je décide d'essayer de tuer tous les processus impliqués par le fichier BAT par son nom, ce qui peut être excessif. C'est acceptable pour moi, car la plupart des processus de mon fichier BAT ne sont pas utilisés fréquemment, tels que ping, tracert, netstat etc.Si vous avez une meilleure solution s'il vous plaît laissez-moi savoir. Merci.

PDATE2

Arbre de processus BAT

alt text

9
SpawnST

Les processus sont généralement lancés comme un arbre, je vous conseillerais de lancer Microsoft/Sysinternals Process Explorer , commencez par cliquer sur l'option Show Process Tree (1), puis recherchez votre processus, puis cliquez avec le bouton droit de la souris et choisissez Kill Process Tree (2). ) Cela devrait tuer à la fois le fichier d'origine et tout ce qu'il a lancé.

alt text

10
William Hilsum

Vous pouvez modifier le fichier de commandes afin qu'il utilise un fichier de verrouillage pour continuer à fonctionner, en insérant des contrôles entre les commandes pour déterminer l'existence du fichier. Pour arrêter l'exécution du fichier de commandes, supprimez simplement le fichier de verrouillage.

Voici un fichier batch de démonstration:

echo xx > "c:\temp\lockfile"
pause
if not exist "c:\temp\lockfile" goto  exit
pause
del "c:\temp\lockfile"
:exit

Pour tuer violemment les processus en cours d'exécution, vous pouvez créer un fichier batch 'kill' qui contiendra les commandes taskkill pour toutes les tâches éventuellement lancées à partir du fichier batch:

del "c:\temp\lockfile"
taskkill /im mytask1.exe
taskkill /im mytask2.exe
5
harrymc

Une BAT commence généralement à lancer une instance de CMD.exe. En fonction de votre script, il lancera également d'autres processus.

1
vcsjones

J'ai écrit un app qui pourrait vous aider, du moins si la BAT est en cours d'exécution dans une fenêtre CMD. Vous pouvez afficher les fenêtres de l'application en cours d'exécution et obtenir le PID de l'application. Vous pouvez ensuite la tuer avec mon application, vous pouvez également voir tous les processus qu'elle a engendrés et les tuer également. C'est un programme vraiment simple, mais efficace pour ce genre de chose. Vous pouvez également l'utiliser pour localiser avec exactitude l'emplacement du fichier BAT, au cas où vous ne le sachiez pas déjà.

1
MaQleod

Comment le fichier batch est-il appelé?
S'il provient du planificateur de tâches, vous pouvez également l'arrêter à partir de là. S'il s'agit d'un service, vous pouvez alors arrêter le service.

1
weismat

Trouvé ce fil de discussion:

http://www.gamedev.net/community/forums/topic.asp?topic_id=261694

Il suggère d'utiliser ShellExecuteEx (ou CreateProcess) afin que vous puissiez obtenir un descripteur de processus, qui peut ensuite être utilisé pour tuer le processus.

1
Chris Hulan

Si vous l'avez ouvert dans l'invite de commande, vous pouvez appuyer sur Ctrl+C. Attendez quelques secondes et il sera terminé.

0
harvey hopkins