我需要从 cmd
启动一个 exe
(包装 exe 以便我可以提供一些命令行选项)。问题是仅仅从 cmd 调用 exe 并不能使包装完全透明:如果 .exe 挂起,杀死 cmd 不会杀死 exe。我也需要它来杀死 exe。我可以在普通 Windows 中(从 XP 开始)执行此操作而不添加任何依赖项吗?
在 Bash 中,您有 exec
,它用提供的命令替换 shell 进程。这对于编写包装器脚本很方便,使包装过程完全透明。我知道 Windows 缺少使这成为可能的 execve()
,但我只对 parent-killing-its-children 部分感兴趣。
澄清:我不是在寻找杀死 exe 的方法,我是在寻找包装(启动)exe 的方法,以便使用标准方式(例如 Ctrl+C 或来自任务管理器)有效。例如,我可以创建一个 lnk
文件(Windows 快捷方式)并获得此行为,但我想从脚本中执行此操作(例如,lnks 仅适用于绝对路径,我无法部署那个)。
谢谢。
最佳答案
Taskkill
可用于匹配特定条件。通过输入 Taskkill/?
,您可以获得手册并可以阅读有关如何使用通用属性进行过滤的信息。我假设您所有的 child 在他们的名字中都有一个共同的部分。您可以使用 taskkill 对带有通配符的名称进行数学运算,并关闭所有与该名称匹配的子项。
编辑(摘自评论部分):
正如 IInspectable 指出的那样,您可以使用 /T
标志终止所有子进程。
从批处理开始编辑,您可以使用 START
( reference here ) 启动与批处理并行的 exe,并在批处理中中止。
编辑我编写并测试了这个迷你示例:
@echo off
echo starting %1
start %1
echo Any key to kill execution
pause >> NUL
taskkill /IM %1 /t
关于windows - 在 Windows 中以其子项也被杀死的方式杀死批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20892102/