我这里有一个小的批处理脚本,它给出了某个进程的百分比(本例中为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我知道我可以将它写入文本文件,但这非常草率,我更愿意这样做。
答案 0 :(得分:0)
您不必写入文件,FOR
命令正是您所需要的。
我在你的代码中看到了两个缺陷。
您需要在wmic
命令
如果您有多个"SERVER"
个实例,并且如果您希望以后为每个实例使用VARIABLE
,则需要使用延迟扩展 < / p>
所以,你的代码可能是..
@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
)