J'ai un fichier BAT exécuté en arrière-plan sur Windows qui dure environ dix minutes. Maintenant, je veux l'arrêter pendant qu'il est en cours d'exécution, mais je ne trouve pas son nom dans la liste des processus dans le gestionnaire de tâches. Alors, comment puis-je aborder cela? Merci!
UPDATE1
Il semble difficile d'arrêter un processus BAT en cours d'exécution dans backgroud.Et je décide d'essayer de tuer tous les processus impliqués par le fichier BAT par leur 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, faites-le moi savoir.Merci.
UPDATE2
Arbre de processus BAT
ShellExecute(NULL,"open","some.bat",NULL,NULL,SW_HIDE);
en VC ++.Réponses:
Les processus sont généralement lancés sous la forme d'un arbre, je conseillerais de lancer Microsoft / Sysinternals Process Explorer , commencez par cliquer sur l'
Show Process Tree
option (1), puis trouvez votre processus et faites un clic droit et choisissezKill Process Tree
(2) Cela devrait tuer à la fois le fichier d'origine et tout ce qu'il a lancé.la source
taskkill /F /T /IM cmd.exe
seul problème est que chaque fichier BAT démarrera uncmd.exe
processus avec un PID différent Je dois déterminer lequel est ma cible.Vous pouvez modifier le fichier de commandes afin qu'il utilise un fichier de verrouillage pour continuer à fonctionner, en insérant des vérifications entre les commandes pour l'existence du fichier. Pour arrêter l'exécution du fichier batch, supprimez simplement le fichier de verrouillage.
Voici un fichier batch de démonstration:
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:
la source
tracert
par exemple.Une BAT lance généralement juste une instance de CMD.exe. Selon ce que fait votre script, il démarrera également d'autres processus.
la source
J'ai écrit une application qui pourrait vous aider, au moins si le BAT s'exécute dans une fenêtre CMD. Vous pouvez afficher les fenêtres d'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 vrai programme simple, mais efficace pour ce genre de chose. Vous pouvez également l'utiliser pour localiser exactement sur votre disque dur le fichier BAT, au cas où vous ne le saviez pas déjà.
la source
Comment le fichier de commandes 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 arrêter le service.
la source
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.
la source
Si vous l'avez ouvert dans l'invite de commande, vous pouvez appuyer sur Ctrl+ C. Attendez quelques secondes et il sera terminé.
la source