在Windows中杀死批处理文件,使其子代也被杀死

时间:2014-01-02 21:20:10

标签: windows batch-file cmd

我需要从exe开始cmd(包装exe以便我可以提供一些命令行选项)。问题是只是从cmd调用exe不会使包装完全透明:如果.exe挂起,杀死cmd将不会杀死exe。我也需要它来杀死exe。我可以在普通的Windows(从XP上)执行此操作,而不添加任何依赖项吗?

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

澄清:我不是在寻找杀死exe的方法,我正在寻找包装(启动)exe的方法,以便使用标准方法杀死它(例如Ctrl + C或来自任务经理)工作。例如,我可以创建一个lnk文件(Windows快捷方式)并获得此行为,但我想从脚本中执行此操作(对于一个,lnks只能使用绝对路径,我无法部署它)。

感谢。

2 个答案:

答案 0 :(得分:0)

Taskkill可用于匹配特定条件。输入Taskkill/?即可获得手册,并可以阅读如何使用常用属性进行过滤。我假设你所有的孩子都有他们名字中的共同部分。您可以使用taskkill使用通配符对名称进行数学计算,并关闭与该名称匹配的所有子项。


编辑(摘自评论部分): 正如IInspectable指出的那样,你可以使用/T标志来杀死所有子进程。


从批处理开始编辑,您可以使用STARTreference here)启动与批处理并行的exe并在批处理中进行中止。

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

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

答案 1 :(得分:0)

taskkill /F /IM iexplore.exe

/F强制杀死。

哪些可以杀死子进程 例如https://www.windows-commandline.com/taskkill-kill-process/