如何从 Windows 中的命令提示符获取自己的进程 pid

如何从 Windows 中的命令提示符获取自己的进程 pid

我正在尝试找到一种方法来从命令提示符中获取我自己的 PID(以便稍后在 bat 脚本中使用)。

到目前为止我发现的唯一有用的方法是getpids.exe从这里使用:http://www.scheibli.com/projects/getpids/index.html,但我正在寻找 Windows“内置”的命令。

我正在寻找一种“万无一失”的方法。不要假设我的进程是唯一的 cmd.exe 或任何其他东西。

答案1

由于其他解决方案都不是万无一失且内置的,因此我认为我会提供以下解决方案,但请注意,您需要以某种方式解析/保存结果:

title mycmd
tasklist /v /fo csv | findstr /i "mycmd"

答案2

扩展 Tony Roth 的回答:

title uniqueTitle
for /f "tokens=2 USEBACKQ" %f IN (`tasklist /NH /FI "WINDOWTITLE eq uniqueTitle*"`) Do echo %f

使用 WINDOWTITLE 过滤器可以避免使用管道,因此您可以将其放在 for 循环中,并使用 SET 将其分配给变量(如果您愿意):

title uniqueTitle
for /f "tokens=2 USEBACKQ" %f IN (`tasklist /NH /FI "WINDOWTITLE eq uniqueTitle*"`) Do set ourPID=%f

删除/v可使其更快,而 可/NH摆脱标题行。您需要后面的通配符,"uniqueTitle"因为窗口标题实际上包含当前命令(因此如果您尝试完全匹配它,它会一直持续下去)。

答案3

使用 PowerShell + WMI:

powershell (Get-WmiObject Win32_Process -Filter ProcessId=$PID).ParentProcessId

使用 WMIC:

for /f %a in ('wmic os get LocalDateTime ^| findstr [0-9]') do set NOW=%a
wmic process where "Name='wmic.exe' and CreationDate > '%NOW%'" get ParentProcessId | findstr [0-9]

(与往常一样,在批处理文件中%使用双重符号)for

答案4

  1. Windows 任务管理器,您需要转到查看 -> 选择列..然后选择 PID。
  2. “tasklist /v”在命令提示符中获取详细的任务信息。
  3. 进程浏览器live.sysinternals.com

相关内容