我正在使用一个简单的脚本来获取当前系统的CPU使用率。
但它只是打印“ECHO is off
”
这是我的脚本。
set temp=
for /f "skip=1" %%p in ('wmic cpu get loadpercentage') do (set temp=%%p)
echo %temp%
答案 0 :(得分:3)
TEMP
是一个逻辑,但对于变量来说是一个非常糟糕的名称。默认情况下,它是指向临时目录的指针,更改它可能会产生意外结果。 (TMP
由于历史原因指向同一个地方......)
如果变量为空,那么您将报告ECHO
状态。语法ECHO(%whatever%
将报告whatever
的内容,即使它是空的。
WMIC
输出为UNICODE,令FOR/f
感到困惑。它将00 0D 00
后面的字节视为新的(空)行。
set var=
for /f "skip=1" %%p in ('wmic cpu get loadpercentage') do IF NOT DEFINED var set var=%%p
ECHO(var=%var%
应该解决你的问题。
答案 1 :(得分:1)
wmic的输出有多行,最后一行是空的。您的for
循环正在读取所有这些并将变量设置为theese行的内容,因此当循环结束时,您的变量为空并且您没有要显示的数据。过滤wmic的输出,因此只处理包含数据的行。 AND%temp%是一个保存临时文件目录路径的变量。使用它作为存储将给你带来问题。
for /f "tokens=*" %%p in ('wmic cpu get loadpercentage /value ^| find "=" ') do (set "%%p")
echo LoadPercentage: %LoadPercentage%