我想汇总批处理脚本中所有名为"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中工作,最好与我的命令非常相似。
谢谢
发布于 2012-04-18 05:18:41
您的FOR语句将失败,因为=是一个标记分隔符,并且它正在被批处理解析器剥离。如果您以^=身份转义它,它将会工作。
WMIC有一个不幸的“特性”,当它的输出通过管道传输时,它在每一行输出的末尾包含一个额外的回车字符(0x0D),在输出的末尾加上一个额外的行。这可能会导致FOR循环中多余的行出现问题。通过更改FINDSTR以查找至少一个数字,而不是缺少标题行,您的情况很容易解决。
要获得总和,只需在循环中设置/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位)。
https://stackoverflow.com/questions/10197204
复制相似问题