我不知道以前是否有人问过这个问题,但这里是这样的:
有没有办法写一个批处理脚本,让它持续监控某个可执行程序的cpu使用率,直到cpu达到0%?假设我们有一个名为xyz.exe
的程序,根据任务管理器的数据,它目前占用了大约2-4%的cpu。经过一段时间后,cpu达到0%。我尝试使用tasklist
命令如下,但无法将其用于cpu目的:
@echo off
:loop
tasklist | "xyz"
if errorlevel 1 (
echo xyz still running
goto loop
) else (
goto next
)
:next
xyz completed
发布于 2014-08-09 15:06:17
使用typeperf "\Process(xyz)\% Processor Time"
,您可以检查xyz
的处理器使用情况
@echo off
:check
for /f "skip=2 tokens=2 delims=," %%c in ('typeperf "\Process(xyz)\%% Processor Time" -sc 1') do (
set cpu_usage=%%~c
goto :break
)
:break
echo %cpu_usage%
set cpu_usage=%cpu_usage:.=%
:: 1 is set in the front to avoid octal comparison
if 1%cpu_usage% LSS 11000000 (
goto :check_process
) else (
goto :check
)
:: sleep for 1 second
pathping 127.0.0.1 -n -q 1 -p 1000 >nul 2>&1
:check_process
QPROCESS * | find /i "xyz" >nul 2>&1 && (
echo process xyz is running
) || (
echo process xyz is not running
)
endlocal
;
发布于 2014-08-09 12:10:15
使用这个
For /f "skip=1" %%a in ('wmic cpu get loadpercentage LoadPercentage') do echo %%a
此方法简单地将wmic命令的标准输出解析到for body,并从中创建一个实例变量……希望能有所帮助
发布于 2014-08-09 13:04:07
由于不确定需要哪些权限,以下powershell管道将通过WMI查询( Get-Process powershell对象似乎不计算百分比):
gwmi Win32_PerfFormattedData_PerfProc_Process |
where {$_.Name -eq "jusched"} | select IDProcess,Name,PercentProcessorTime
https://stackoverflow.com/questions/25215083
复制相似问题