Programming Field

Tasklist - DOS コマンド一覧

スポンサーリンク

[Windows NT系] コンピューター上で実行されているプロセスの一覧を表示します。

構文

tasklist[.exe] [/S <remote-system> [/U <user-name> [/P [<password>]]]]
  [/M [<module-name>] | /SVC | /V] [/FI <filter>]
  [/FO <output-format>] [/NH]
/S <remote-system>
プロセスの一覧を取得するコンピューター(ローカル/リモート)の名前を指定します。IPアドレスやホスト名を指定します。省略した場合はローカルコンピューターが対象になります。
/U <user-name> [/P [<password>]]
コンピューター名を指定した際のログイン名・パスワードを指定します。<user-name> にはドメイン名を指定することができます(「ドメイン名\ユーザー名」の形式です)。省略した場合はこのコマンドを実行したユーザーが使用されます。
パスワード指定は、「/P [<password>]」全体を省略した場合はパスワードなし、「/P」のみ指定して「<password>」を省略した場合はプロンプトを表示してユーザーにパスワード入力を促すようになります(このプロンプトでは入力されたパスワードが「*」で表示されます)。
/M [<module-name>]
<module-name> を指定した場合、<module-name> に指定したモジュール(DLLなど)を読み込んでいるプロセスのみを表示します。<module-name> には末尾にのみワイルドカード「*」が指定できます。
<module-name> を指定せず「/M」のみを指定した場合は、プロセスの一覧を表示する際にそのプロセスが読み込んでいるモジュール名をすべて表示します。なお、この動作には時間がかかる場合があります。
/M を指定した場合、「セッション名」「セッション#」「メモリ使用量」の各項目は表示されなくなります。
「/FI "MODULES eq <module-name>"」でも同じ一覧を取得することができますが、フィルターで指定した場合はモジュール名が表示されません。
/M と /SVC, /V は同時に指定することができません。
/SVC
プロセスの一覧を表示する際に各プロセスに紐づいている「サービス」の名前を表示します。/SVC を指定した場合、「セッション名」「セッション#」「メモリ使用量」の各項目は表示されなくなります。
/V
プロセスの一覧に「状態」「ユーザー名」「CPU時間」「ウィンドウタイトル」の項目を表示します。状況によっては取得に時間がかかる場合があります。
/V を指定した場合は「セッション名」「セッション#」「メモリ使用量」の各項目も表示されます。
/FI <filter>
プロセスの一覧に表示するプロセスの対象を絞ります(フィルター)。指定できる書式は解説をご覧ください。
/FI は複数指定することができます。その場合は AND 検索(すべてのフィルターに一致するもののみを出力)となります。
/FO <output-format>
画面に出力する際の書式を指定します。指定できる値は以下の3種類です。/FO を省略した場合は「TABLE」になります。
指定する値意味
TABLE疑似的なテーブル表記で出力します。複数のプロセスを並べて見ることができますが、「/V」を指定した場合は横幅を多く使うため、既定のコマンドプロンプトの幅では表示が崩れる場合があります。
LISTプロセスごとに箇条書きのような形式で情報を表示します。見やすさは向上しますが、フィルターを指定しない場合や複数のプロセスが該当する場合は出力量が多くなる場合があります。なお、LISTを指定した場合は「/NH」オプションを使用することができません。
CSVCSV形式で出力します。Forコマンドに渡すなど、出力結果を解析したい場合に便利です。
/NH
TABLEやCSV形式で出力する際にヘッダーを出力しません。

解説

Tasklistコマンドでは実行中のプロセスのうち、フィルターに該当するプロセスを出力します。プロセスを終了させたい場合は Taskkill を使用します。

「/FI」スイッチで指定するフィルターは「<name> <op> <value>」の形式で指定します(スペースを含むため全体を「" "」で括ります)。使用できるフィルターは以下の通りです。

フィルター名 <name>使用できる比較演算子 <op>(※)対象
CPUTIMEeq, ne, gt, lt, ge, leCPU時間。<value> は「hh:mm:ss」(時:分:秒、分と秒は1~2桁)の形式で指定します。
IMAGENAMEeq, neプロセス名(イメージ名)。<value> は完全一致の名前か末尾にワイルドカード「*」を含んだ文字列を指定します。(部分一致ではありません。)
MEMUSAGEeq, ne, gt, lt, ge, leメモリ使用量。<value> は数値(KiB単位)を指定します。
MODULESeq, neプロセスが読み込んでいるモジュール名。<value> は完全一致の名前か末尾にワイルドカード「*」を含んだ文字列を指定します。1つのプロセスには複数のモジュールが読み込まれているときがありますが、このフィルターを用いた場合は複数の中から1つでも条件に一致した場合結果に含まれるようになります。
PIDeq, ne, gt, lt, ge, leプロセスID。<value> は数値を指定します。
SERVICESeq, neプロセスが属するサービス名。<value> は完全一致の名前か末尾にワイルドカード「*」を含んだ文字列を指定します。1つのプロセスには複数のサービスが紐づいているときがありますが、このフィルターを用いた場合は複数の中から1つでも条件に一致した場合結果に含まれるようになります。
SESSIONeq, ne, gt, lt, ge, leセッション番号。<value> は数値を指定します。
SESSIONNAMEeq, neセッション名。<value> は完全一致の名前か末尾にワイルドカード「*」を含んだ文字列を指定します。
STATUS(※)eq, neプロセスの状態。<value> は「RUNNING」「NOT RESPONDING」「UNKNOWN」のいずれかを指定します。
USERNAMEeq, neユーザー名。<value> は「[ドメイン名\]ユーザー名」の形式で指定します。「ユーザー名」の部分には末尾にワイルドカード「*」を使うことができます。
WINDOWTITLE(※)eq, neプロセスが持つメインウィンドウのタイトル名。<value> は完全一致の名前か末尾にワイルドカード「*」を含んだ文字列を指定します。

TABLEやCSVで出力される項目の順番は以下の通りです。数字はCSVにおいて何番目に当たるかを示しており、「×」はその項目が出力されないことを示しています。

名前通常表示?/Mで表示?/SVCで表示?/Vで表示?
イメージ名1111
PID2222
セッション名3××3
セッション#4××4
メモリ使用量5××5
モジュール×3××
サービス××3×
状態×××6
ユーザー名×××7
CPU時間×××8
ウィンドウタイトル×××9

サンプル1

tasklist /FI "imagename eq excel*"

イメージ名(プロセス名)が「excel」で始まるプロセスの一覧をテーブル形式で表示します。

サンプル2

tasklist /FI "pid lt 1000" /FO CSV

プロセスIDが1000未満のプロセスをCSV形式で表示します。

サンプル3 (バッチファイル)

type NUL > nplist.txt
for /f "usebackq tokens=1,2 delims=," %%a in (`tasklist /FI "imagename eq notepad*" /FO CSV /NH`) do (
    echo %%~a: %%~b>> nplist.txt
)

[拡張構文] イメージ名(プロセス名)が「notepad」で始まるプロセスを取得し、そのイメージ名とPIDをファイル「nplist.txt」に出力します。Forを用いてTasklistの出力を解析し、CSVの1番目(=イメージ名)と2番目(=PID)の要素を変数%%a, %%bに入れるようにしています。なお、CSV形式のため各値が「" "」で括られているので、「~」指定を用いて除去しています(「%」をご覧ください)。

※ ヒットするプロセスが見つからない場合、画面にエラーメッセージが出力されます。