批处理获取某个进程的CPU使用率

2024年11月18日 17:32
有1个网友回答
网友(1):

这个delims=错了。。还有就是wmic有时候产生不是简单的空行或空格(要在16进制编辑器里才能看到),加上Findstr的BUG,所以经常出现不是想要的结果。。

@echo off&Setlocal EnableDelayedExpansion
TITLE RelayServer Check
for /f "skip=2 tokens=2 delims==" %%i in (
'wmic process where "name='explorer.exe'" get KernelModeTime^,UserModeTime /value'
) do (
set "x=!x! %%i"
)
call :Div %x% 5
>nul pause&exit /b
:Div dividend divisor [decimal] ||@by zj
::不支持超大数和浮点
Setlocal EnableDelayedExpansion
set "dnd=%~1"&set "dsr=%~2"&set "dec=%~3"
if %dsr% equ 0 echo 除数不能是0!&goto :EOF
set/a x=%dnd%/%dsr%
if %x% equ 0 (
if %dnd% lss 0 (if %dsr% gtr 0 set "x=-0") else if %dsr% lss 0 set "x=-0"
)
if not defined dec set "dec=8"
if %dec% equ 0 echo %x%&goto :EOF
for /l %%i in (1 1 %dec%) do (
set/a dnd=^(a=!dnd!%%%dsr%^)*10,b=dnd/%dsr%
set "y=!y!!b!"
)
echo CPU使用率:%x%.%y:-=%%%
Endlocal
goto :EOF

PS:如非必要建议少用wmic