如何获取与创建该批处理文件和 cmd 进程关联的 conhost 进程的 PID?

如何获取与创建该批处理文件和 cmd 进程关联的 conhost 进程的 PID?

说我有几个康索进程恰好已经在运行。现在我运行一个批处理文件,它启动一个cmd进程,而这个进程又会导致另一个进程康索要打开的进程。在批处理文件中

我的目标是能够关闭所有其他康索先前运行的进程(或者可能是在运行批处理文件之后)并且没有关闭康索与该批处理文件相关联并cmd.exe执行所有关闭操作。如果康索被关闭,它的cmd进程和批处理文件也会过早结束(我希望它在那之后做其他事情)。

这不是上面链接中提出的问题的重复。那个问题只涉及获取的pidcmd而不是相关康索 PID

答案1

以下代码片段可以找到解决方案:

@ECHO OFF
SETLOCAL EnableExtensions
::: get my own process ID - use any method
::: applied here: altered TonyRoth's answer https://serverfault.com/a/126643/257436
set "_title=a885974x%random%"
title %_title%
for /f "tokens=2" %%G in ('tasklist /V ^| findstr "%_title%"') do (
    set "_myProcessID=%%~G"
)

::: get the associated conhost process ID
set "_wQuery=ParentProcessId=%_myProcessID% and Name='conhost.exe'"
::: debug ::: wmic process where "%_wQuery%" get Name, ProcessId, WindowsVersion
for /f "usebackq" %%G in (`
  wmic process where "%_wQuery%" get ProcessId^, WindowsVersion^|findstr /R "[0-9]"
`) do set "_myConhostID=%%~G"

::: propagate results
set _my

答案2

您可以使用 Microsoft 的 Process Explorer 工具来查找活动进程。通过将目标符号拖到要获取 PID 的窗口上,即可找到该进程。

在此处输入图片描述

相关内容