我正在尝试制作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
你能帮帮我吗?
答案 0 :(得分:1)
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
也会返回一些空行)
(我选择了另一个值(LoadPercentage)来让事情发生)
我将值(包括附加CR
)分配给变量,然后写[变量减去CR]三个空格和[{1}}的[最后一个字符]]({{1} })。
当新值比旧值短时,三个空格必须覆盖剩余的字符。
答案 1 :(得分:0)
@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