如何在批处理中将某个进程的CPU百分比保存到变量中?

时间:2013-07-10 07:42:25

标签: batch-file process command cpu percentage

我这里有一个小的批处理脚本,它给出了某个进程的百分比(本例中为Server.exe),我有一个奇怪的错误,它无法将命令输出解析为变量。

以下是完整示例:

@echo off
FOR /F "tokens=*" %%A IN ( 'wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime ^| find /N "Server"' ) DO SET Variable=%%A
for /f "tokens=2 delims= " %%a in ( "%var%" ) do echo %%a
pause

这是你唯一需要注意的部分:

FOR /F "tokens=*" %%A IN ( 'wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime ^| find /N "Server"' ) DO SET Variable=%%A

运行此命令时,将返回“无效的GET表达式”。什么时候应该通过没有缺陷。我如何解决这个问题,以便for循环工作并将输出保存到变量?

P.S我知道我可以将它写入文本文件,但这非常草率,我更愿意这样做。

1 个答案:

答案 0 :(得分:0)

您不必写入文件,FOR命令正是您所需要的。

我在你的代码中看到了两个缺陷。

  1. 您需要在wmic命令

  2. 中转义逗号
  3. 如果您有多个"SERVER"个实例,并且如果您希望以后为每个实例使用VARIABLE,则需要使用延迟扩展 < / p>

  4. 所以,你的代码可能是..

    @echo off
    setlocal enabledelayedexpansion
    FOR /F "tokens=*" %%a IN ( 'wmic path Win32_PerfFormattedData_PerfProc_Process get Name^,PercentProcessorTime ^| find /N "server"' ) DO (
       SET var=%%a
       for /f "tokens=2 delims= " %%b in ( "!var!" ) do echo %%b
    )