echo在批处理脚本中输出“ECHO is off”

时间:2013-11-26 07:50:20

标签: batch-file cpu-usage

我正在使用一个简单的脚本来获取当前系统的CPU使用率。 但它只是打印“ECHO is off

这是我的脚本。

set temp=
for /f "skip=1" %%p in ('wmic cpu get loadpercentage') do (set temp=%%p)

echo %temp%

2 个答案:

答案 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%