【Windows】バッチ(bat)でプロセスID一覧を取得して表示・ファイル出力

実行中のプロセス一覧を取得できると、どんなプログラムが動いているか調べたり、対象のプロセスを止めたりといったことができるようになります。
今回は、コマンドとバッチを使って、プロセスID一覧を取得して表示したり、ファイル出力する方法をご紹介します。

目次

tasklistコマンドでプロセス一覧を表示

プロセスID一覧は、コマンドプロンプトから表示させることができます。
tasklistコマンドを使用します。

tasklist

実際に出力している例がこちらです。

イメージ名(プロセス名)、PID(プロセスID)、セッション名、セッション#、メモリ使用量について、
一覧で表示されます。

バッチでプロセスID一覧をテキスト出力

次は、同じ内容をファイル出力してみましょう。
バッチファイルを使って、先ほどの表示をテキストファイルに出力します。
書き出しておくと、後で見直したりできて便利です。

適当なバッチファイルを作成し、次をコピペします。
例ではexport_process_id.batとして、実行しました。

@echo off
tasklist /NH > process_list.txt

echo process_list saved
pause

export_process_id.batをダブルクリック実行すると、
このようにコマンドプロンプトが開いて、先ほどのコードが実行されます。

実行後は、テキストファイルが出来てますね!

テキストファイルの中身はこのようになっています。
先ほどと同じ内容で、確かにテキスト出力できていますね!

これで、バッチでプロセスID一覧をテキスト出力することができました。

バッチでプロセスID一覧をcsv出力

次は形式を変えてみましょう。
後処理を掛けるなら、csvファイル形式の方が都合が良いこともあります。
先ほどのファイルだと、例えばエクセルで開く際にスペースでパースされているのを成形しなおすことになり、
ちょっと手間です。

そこでバッチファイルの中身を次のように変えます。

@echo off
tasklist /FO CSV /NH > process_list.csv

echo process_list saved
pause

変わったのはtasklist /FO CSV /NH > process_list.csvですね。
tasklistコマンドの引数を/FO CSVとしています。
csvファイル形式でレスポンスしてね、という意味です。

実行結果がこちらです。

これで、バッチでプロセスID一覧をcsv出力することができました。

特定の名前を含むプロセスだけをテキスト出力

次は、特定の名前を含むプロセスだけを取り出してみたいと思います。

@echo off

set "processName=chrom*"
tasklist /fi "imagename eq %processName%" /NH > specified_process_list.txt

echo process_list saved
pause

tasklist /fi "imagename eq %processName%"がコマンド部分です。
processNameとして、set "processName=chrom*"としていますので、
「chrom*」で検索しています。

例では、export_specified_process_id.batとしてファイルを作って実行しました。
結果がこちらです。

chrome.exeだけが抽出された結果になりました。
無事に「chrom*」を含むプロセス名だけをリストすることができました!

いくつかのパターンに分けて、
バッチ(bat)でプロセスID一覧を取得して表示・ファイル出力することができました。
PIDが分かると、特定のプロセスを操作したり、特定のプロセスが消費しているリソースを調べたり、
プログラム制御する際のデバッグに活用できたりします。

今回は以上となります。
本記事が少しでもお役に立てれば幸いです。
それでは、読んで頂きありがとうございました!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次