Tuez le fichier de commandes de manière à ce que ses enfants soient également tués, sous Windows

Je dois lancer un exe depuis un cmd (envelopper l’exe pour pouvoir fournir certaines options de ligne de commande). Le problème est que le simple fait d’appeler l’exe depuis la cmd ne rend pas l’emballage complètement transparent: si le fichier .exe se bloque, le fait de tuer la cmd ne tuera pas l’exe. J’en ai besoin aussi pour tuer l’exe. Puis-je le faire sous Windows (à partir de XP), sans append de dépendances?

Dans Bash, vous avez exec qui remplace le processus shell par la commande fournie. Ceci est pratique pour écrire des scripts wrapper, ce qui rend le processus d’emballage complètement transparent. Je sais que Windows manque execve() pour rendre cela possible, mais je ne m’intéresse qu’à la partie parent-kill-its-children.

CLARIFICATION: Je ne cherche pas des moyens de tuer l’exe, je cherche des moyens d’ envelopper (démarrer) l’exe pour que le tuer en utilisant des méthodes standard (par exemple, Ctrl + C ou du gestionnaire de tâches) fonctionne. Par exemple, je pourrais créer un fichier lnk (raccourci Windows) et obtenir ce comportement, mais je veux le faire à partir d’un script (pour une fois, lnks ne fonctionne qu’avec des chemins absolus, je ne peux pas le déployer).

Merci.

Taskkill peut être utilisé pour correspondre à certains critères. En entrant dans Taskkill/? vous obtenez le manuel et vous pouvez lire comment filtrer en utilisant les propriétés communes. Je suppose que tous vos enfants partagent une partie commune en leur nom. Vous pouvez utiliser taskkill pour calculer le nom avec des caractères génériques et fermer tous les enfants correspondant à ce nom.


EDIT (extrait de la section commentaires): Comme le souligne IInspectable, vous pouvez tuer tous les processus enfants en utilisant l’indicateur /T


EDIT à partir d’un lot vous pouvez utiliser START ( référence ici ) pour lancer l’exe parallèle au lot et avoir votre abandon dans le lot.

Edit j’ai écrit et testé ce mini exemple:

 @echo off echo starting %1 start %1 echo Any key to kill execution pause >> NUL taskkill /IM %1 /t