【问题标题】:How do I get the raw number of bytes for a PID on Windows CLI?如何在 Windows CLI 上获取 PID 的原始字节数?
【发布时间】:2021-12-08 11:47:27
【问题描述】:

经过大量研究,我已经达到了这一点:

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 或其他“格式化”/不需要的数据。没有“格式化”的内存量。只是原始字节。

它是怎么做的?

【问题讨论】:

  • 你想通过 PHP 调用它吗?
  • @ChrisHaas 实际上我是。
  • 这涉及到几个步骤:执行命令并获取其输出、解析 CSV、解析 Windows 区域设置中的显示数字、解析单位后缀……你坚持哪一个?

标签: windows command-line-interface tasklist


【解决方案1】:

调用一些外部程序并解析其输出永远不会是理想的,但我们开始吧:

cmd.exe /D /V:ON /E:ON /c for /F "tokens=2 delims=K:" %a in ('tasklist /fi "pid eq 13584" /fo list^^^|find /i " K"') do @echo.%a

这几乎可行。您仍然需要删除空格并乘以 1000,但在 PHP 中这样做比在批处理代码中更容易。它有点过于依赖tasklist 输出数据的方式,这可能不是你应该在生产中使用的东西。

但我们可以做得更好:

cmd.exe /D /V:OFF /E:ON /c for /F "skip=1 tokens=*" %a in ('wmic process where "processid=13584" get WorkingSetSize') do @echo.%a

【讨论】:

    【解决方案2】:

    看wmic

    wmic process where processid=13584 get WorkingSetSize

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 2012-06-25
      • 2021-05-03
      相关资源
      最近更新 更多