Как получить исходное количество байтов для PID в Windows CLI?

Как получить исходное количество байтов для PID в Windows CLI?

Проведя множество исследований, я пришел к следующему выводу:

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-скрипте.

Связанный контент