0

我在这里有一个小批处理脚本,它给了我某个进程的百分比(在这个例子中是 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 循环正常工作并将输出保存到变量中?

PS我知道我可以把它写到一个文本文件中,但这很草率,我更愿意这样做。

4

1 回答 1

0

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

我在您的代码中发现了两个缺陷。

  1. 您需要转义wmic命令中的逗号

  2. 如果您有多个"SERVER"实例,并且以后要VARIABLE为每个实例使用,则需要使用延迟扩展

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

@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
)
于 2013-07-10T10:06:57.133 回答