gpt4 book ai didi

windows - 在 Windows 中以其子项也被杀死的方式杀死批处理文件

转载 作者:可可西里 更新时间:2023-11-01 14:36:04 24 4
gpt4 key购买 nike

我需要从 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com