如何在 Windows CLI 上获取 PID 的原始字节数?

如何在 Windows CLI 上获取 PID 的原始字节数?

经过大量研究,我得出了这一点:

tasklist /fi "pid eq 13584" /fo CSV

输出:

"Image Name","PID","Session Name","Session#","Mem Usage"
"php.exe","13584","Console","1","25 660 K"

仍然一团糟。我试图获得如下输出:

25660000

也就是说,没有 CSV 或其他“格式化”/不需要的数据。没有“格式化”的内存量。只有原始字节。

如何完成?

答案1

cmd在现代系统中,这不是最好的方法。Powershell 功能更加丰富,而且一旦你习惯了它的语法和语义,它就更加强大。

例如,列出系统中的所有进程:

PS C:\Users\user> Get-Process

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    325      20    10328      28056       0.28  17868   2 ApplicationFrameHost
    208      15     7308      12952      22.95  12092   0 audiodg
    476      33    26572      15592     106.06   8852   2 BorderlessGaming
    155      11     1792       7600              4132   0 BtwRSupportService
     53       4      672       2980              5096   0 cdarbsvc_v1.0.0_x64
    142       7     1616       9092       0.05  17728   2 CompPkgSrv
... etc

从那里你可以列出特定的 PID:

PS C:\Users\user> Get-Process -PID 12092

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    208      12     7308      12952      31.48  12092   0 audiodg

PM = 私有内存
WS = 工作集

仅获取内存:

PS C:\Users\user> (Get-Process -PID 12092).WorkingSet
13217792
PS C:\Users\user> (Get-Process -PID 12092).PrivateMemorySize
7413760

如果你的系统上有 powershell,你可以使用它来运行命令并返回它cmd

cmd> powershell.exe -command "(Get-Process -PID 12092).PrivateMemorySize"
7598080

有一些建议powershell 可能无法正确输出当从某些环境运行时,需要您使用,Write-Output因此-InputFormat none尝试

powershell.exe -InputFormat none -command "Write-Output((Get-Process -PID 12092).PrivateMemorySize)"

确保您在 php 脚本中正确地转义引号等等。

相关内容