尝试连续批量报告 CPU 时钟速度



我正在尝试制作CPU时钟速度跟踪器,但我需要一些代码方面的帮助。

setlocal enableextensions enabledelayedexpansion
:a
for /f %%a in ('copy /Z "%~dpf0" nul') do set "ASCII_13=%%a"
set /p "=!ASCII_13!" <NUL
wmic cpu get CurrentClockSpeed
goto a

我有兴趣得到这样的东西:

CurrentClockSpeed
2401

不是这个(我尝试使用的代码输出这个):

CurrentClockSpeed
2401

CurrentClockSpeed
2401

CurrentClockSpeed
2401

CurrentClockSpeed
2401

你能帮帮我吗?

wmic有一个丑陋的行尾(一个额外的CR),经常制造麻烦。在您的情况下,它会为您完成工作:

@echo off
setlocal EnableDelayedExpansion
:loop
for /f "delims=" %%a in ('wmic cpu get LoadPercentage /value ^|find "="') do (
  set "value=%%a"
  <nul set /p "=!value:~0,-1!  !value:~-1!"
)
goto :loop

您应该wmic输出过滤到一行(wmic也返回一些空行)
(我选择了另一个值(负载百分比)来让某些事情发生)

我将值(包括附加CR)分配给一个变量,然后写 [变量减去 CR] 三个空格和 [value的最后一个字符] (这是CR)。当新值短于旧值时,这三个空格是覆盖剩余字符所必需的。

@echo off
setlocal EnableDelayedExpansion
for /f %%a in ('copy /Z "%~dpf0" nul') do set "ASCII_13=%%a"
echo CurrentClockSpeed
:a
for /F "tokens=1,2" %%a in ('wmic cpu get CurrentClockSpeed') do if "%%b" neq "" set "value=%%a"
set /p "=%value%    !ASCII_13!" <NUL
goto a

最新更新