首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows + wmic +内存

Windows + wmic +内存
EN

Stack Overflow用户
提问于 2012-04-18 02:49:10
回答 1查看 7.1K关注 0票数 2

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

代码语言:javascript
复制
C:\> wmic process where name="test.exe" get workingsetsize | findstr /v "WorkingSetSize"
55758848
66174976

所以,我想我想用一个FOR循环将所有这些值相加。下面的命令只显示i变量,但是我得到了附加的错误。

代码语言:javascript
复制
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中工作,最好与我的命令非常相似。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-18 05:18:41

您的FOR语句将失败,因为=是一个标记分隔符,并且它正在被批处理解析器剥离。如果您以^=身份转义它,它将会工作。

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

要获得总和,只需在循环中设置/A (在第一次初始化sum变量之后)。

代码语言:javascript
复制
>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位)。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10197204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档