Search code examples
windowsbatch-filecommand-promptwmictaskmanager

Find top 10 processes with wmic command


I know I can do 'wmic process list brief' to display a list of processes. Is there a way to view only the top 10 processes using the most memory?


Solution

  • @echo off
    setlocal EnableDelayedExpansion
    
    (for /F "skip=1 tokens=1,2" %%a in ('wmic process get name^,workingsetsize') do (
       set "size=         %%b"
       echo !size:~-10!    %%a
    )) > wmic.txt
    set i=0
    for /F "skip=1 delims=" %%a in ('sort /R wmic.txt') do (
       echo %%a
       set /A i+=1
       if !i! equ 10 goto :end
    )
    :end
    del wmic.txt
    

    Output example:

      96931840    iexplore.exe
      82161664    explorer.exe
      42319872    svchost.exe
      33656832    svchost.exe
      31469568    dwm.exe
      26943488    iexplore.exe
      25690112    SearchIndexer.exe
      18550784    svchost.exe
      17002496    taskhostex.exe
      16343040    svchost.exe