Here’s some kung-fu command-line that I hacked up this morning while brainstorming a few issues I had come across.
Basically, I needed to figure out how to keep an eye on a particular process’ CPU time. Sure, you can watch this from Task Manager but this method is better (IMHO) because I can save the log output for future analysis.
For example, I can launch my program and then start this batch file to monitor it’s CPU time throughout it’s life. When the process terminates, the batch file terminates as well.
Here’s the batch file code:
: report processor time for given process until process exits (could be expanded to use a PID to be more
: Usage: foo.cmd <processname>
echo Press CTRL-C To Stop...
for /f tokens=2 delims=, %%c in ('typeperf "\Process(%process%)\% Processor Time" -si 1 -sc 1 ^| find /V ') do (
if %%~c==-1 (
) else (
echo Process seems to have terminated.
Here’s a VBscript that is little different but still reports CPU time for every process. Good starting point if you need to hack something up.
I previously posted up a pretty lengthy entry on using WMIC to find CPU usage in the event you might be intested in that method as well.
Set objWMIService = GetObject(winmgmts: & strComputer & rootcimv2)
Set colProcess = objWMIService.ExecQuery(Select * from Win32_PerfFormattedData_PerfProc_Process,,48)
For Each obj in colProcess
If obj.Name <> Idle And obj.Name <> _Total Then
WScript.echo obj.Name & , & obj.PercentProcessorTime