在Windows中杀死batch file的方式,使其子项也被杀死

我需要从一个cmd启动一个exe (包装EXE,所以我可以提供一些命令行选项)。 问题是,从cmd调用exe不会使包装完全透明:如果.exe挂起,杀死cmd不会杀死exe文件。 我也需要它来杀死exe文件。 我可以做到这一点在纯Windows(从XP上),而不添加任何依赖?

在Bash中,你有exec ,用所提供的命令replaceshell进程。 这对于编写包装脚本非常方便,使得包装过程完全透明。 我知道Windows缺lessexecve()使这成为可能,但我只对父母杀害它的孩子部分感兴趣。

澄清:我没有find杀死exe的方法,我正在寻找包装 (启动)exe的方法,以便使用标准方式(例如,Ctrl + C或从任务pipe理器)杀死它。 例如,我可以创build一个lnk文件(Windows快捷方式)并获得这种行为,但我想从一个脚本来完成(对于一个,lnks只能使用绝对path,我不能部署)。

谢谢。

Solutions Collecting From Web of "在Windows中杀死batch file的方式,使其子项也被杀死"

Taskkill可以用来匹配某些标准。 通过输入Taskkill/? 你可以阅读手册并阅读如何使用公共属性进行过滤。 我假设你们所有的孩子都以他们的名义分享一个共同的部分。 你可以使用taskkill来用通配符来计算名字,并关闭所有匹配这个名字的子项。


编辑(从评论部分):作为IInspectable指出,你可以杀死所有的子进程使用/T标志。


编辑从批处理开始,你可以使用START ( 引用这里 )来启动与批处理并行的EXE,并在批处理中止。

编辑我写和测试这个小例子:

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