【问题标题】:Batch script to close all open Command Prompt windows用于关闭所有打开的命令提示符窗口的批处理脚本
【发布时间】:2021-02-10 16:56:37
【问题描述】:

我有一个.cmd 文件,我调用它来通过以下方式打开Command Prompt 的多个实例:

launcher.cmd -fs
launcher.cmd -tds
launcher.cmd -fsd

每个命令都会打开一个新的命令提示符。

所以我想做的是创建一个批处理文件来自动关闭所有打开的Command Prompt,而不是手动执行。

【问题讨论】:

    标签: windows-7 command-prompt


    【解决方案1】:

    小心:您可能会杀死比您想要的更多的进程:

    taskkill /IM cmd.exe
    

    您可以添加额外的过滤器:

    taskkill /IM cmd.exe /FI "WINDOWTITLE eq launcher*"
    

    使用

    tasklist /FI "imagename eq cmd.exe " /V

    了解哪些 cmd.exe 进程将被 taskkill-ed

    您可以添加 /F 参数来强制关闭进程,但我只会在进程未响应正常请求时使用它。

    【讨论】:

    • taskkill 类似于 Ctrl + C ?
    • WINDOWTITLE 上的过滤器对我不起作用。我收到以下错误:Information: no task in service does match the specified criteria.
    • launcher.cmd启动时的窗口标题是什么?您可以在 cmd 中使用命令 TITLE launcher 显式设置窗口标题(在本例中为启动器)。 taskkill 与 ctrl+c 不同,因为 ctrl+c 以受控方式结束脚本,taskkill 只是指示操作系统停止执行并以任何方式卸载特定进程,而无需打扰该进程正在做什么。
    • 我使用了命令title bla。然后我输入 C:\Windows\System32\taskkill.exe /IM cmd.exe /FI "WINDOWTITLE eq bla*" 但我得到了那个错误
    • 确保您的一些launcher.cmd 正在运行,然后运行“tasklist /FI "imagename eq cmd.exe" /v" 以查看您的launcher.cmd 的windowtitle 是什么
    【解决方案2】:

    请注意,为什么接受 Rene 的回答可能不起作用。我从 cmd 文件启动我的应用程序,例如

    start "" my.exe -my -args
    

    my.exe 是一个控制台应用程序,它看起来像我想杀死的 cmd 窗口,但进程名称不是 cmd.exe (!),我必须使用类似的命令

    taskkill /IM my.exe
    

    所以在某些情况下检查真正的进程名称是值得的,例如在 Windows 任务管理器中。

    【讨论】:

      【解决方案3】:
      TASKKILL /F /IM cmd.exe /T 
      

      很好的解决方案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-01
        • 2023-02-26
        • 2013-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多