gpt4 book ai didi

Windows + wmic + 内存

转载 作者:可可西里 更新时间:2023-11-01 09:46:03 33 4
gpt4 key购买 nike

我想在批处理脚本中汇总所有名为“test.exe”的程序的已用内存。我可以使用以下命令获取所有相应进程的内存使用情况:

C:\> wmic process where name="test.exe" get workingsetsize | findstr /v "WorkingSetSize"
55758848
66174976

所以,我想我想用 FOR 循环将所有这些值相加。以下命令只会显示 i 变量,但我仍然收到附加错误。

C:\> for /F %i IN ('wmic process where name="test.exe" get workingsetsize ^| findstr /v "WorkingSetSize"') DO echo %i
test.exe - Invalid alias verb.

我如何更改该命令以将所有使用的内存加在一起并输出它并且它必须在 CMD 中工作,最好与我的命令非常相似。

谢谢

最佳答案

您的 FOR 语句失败,因为 = 是一个标记定界符,它正在被批处理解析器删除。如果您将其转义为 ^=,它将起作用。

WMIC 有一个不幸的“特性”,即每当它的输出通过管道传输时,它都会在每行输出的末尾包含一个额外的回车符 (0x0D),并在输出末尾加上一个额外的行。这可能会导致 FOR 循环中出现额外不需要的行的问题。通过更改 FINDSTR 以查找至少一位数字而不是缺少标题行,您的情况很容易解决。

要获得总和,您只需在循环中使用 SET/A(在首先初始化 SUM 变量之后)。

>set SUM=0
>for /F %i IN ('wmic process where name^="test.exe" get workingsetsize ^| findstr "[0-9]"') DO set /a SUM+=%i

但是 - Windows CMD 中的数学仅限于 32 位有符号整数支持。您的总和很容易超过允许的最大值 2,147,483,647。您最好使用 PowerShell 或 CSCRIPT 来执行 VBS 或 JScript 程序。所有这些替代方案都支持长整数(64 位)。

关于Windows + wmic + 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10197204/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com