3

フラグなどのさまざまなオプションを検討してきましたが/format、並べ替えは XML または HTML 出力でのみ可能であるようです。コマンドプロンプト自体でソートしたいと思います。TaskListでさえこれを行うことはできないようです (そして、より高速に動作するように思われるので、wmic を使用したいと思います)。

実行するコマンドの例は、wmic process get name,processid,workingsetsize. プロセスはプロセス ID でソートされているように見えますが、(少なくとも私の使用例では) 名前またはメモリ使用量でソートする方がはるかに理にかなっています ( workingsetsize)。

リクエストに応じて、wmic プロセス テーブルの出力例を次に示します。

Name                          ProcessId  WorkingSetSize
System Idle Process           0          20480
System                        4          765952
smss.exe                      384        393216
csrss.exe                     500        2850816
wininit.exe                   596        774144
csrss.exe                     612        6230016
winlogon.exe                  672        2023424
services.exe                  696        7192576
lsass.exe                     704        9814016
svchost.exe                   820        5287936
svchost.exe                   872        7454720
atiesrxx.exe                  936        1028096

明らかに、プロセス リストは非常に長くなる可能性があるため、ここでは省略しています。

4

6 に答える 6

2

これはあなたの役に立ちますか?Win 8 で動作し、メモリ使用量でソートされたプロセスのリストを提供します。

tasklist /nh |sort /+65
于 2013-05-17T02:50:26.987 に答える
1

これはコマンド ラインで動作する可能性があります (Windows のバージョンに依存し、保証はありません!):

(for /f "delims=" %i in ('wmic process get Name^, ProcessId^, WorkingSetSize ') do @set "wss=%i" &call set "wss=%wss:~0,35%%wss:~-12%"&call echo(%wss%) | more +1 | sort /+35
于 2013-05-16T07:23:29.210 に答える
0

ここでは Peter の手法を使用しましたが、データを CSV 形式で返しました。これは、サイズ列で並べ替えられた "PID、WorkingSetSize、Name" 形式のバッチ ファイルの解析が容易です。

@ECHO OFF
SETLOCAL
FOR /f "delims==" %%i IN ('set $ 2^>nul') DO SET "%%i="
FOR /f "skip=2 tokens=2-4 delims=," %%a IN ('cmd /c "wmic process get Name, ProcessId, WorkingSetSize /format:csv" ') DO (

  SET wss=0000000000000000000%%c
  CALL SET $%%wss:~-20%%=%%b,%%c,%%a

)

FOR /f "tokens=1*delims==" %%i IN ('set $') DO ECHO(%%j
pause
于 2013-05-16T06:20:12.117 に答える