実行中のプロセス一覧を取得できると、どんなプログラムが動いているか調べたり、対象のプロセスを止めたりといったことができるようになります。
今回は、コマンドとバッチを使って、プロセス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が分かると、特定のプロセスを操作したり、特定のプロセスが消費しているリソースを調べたり、
プログラム制御する際のデバッグに活用できたりします。
今回は以上となります。
本記事が少しでもお役に立てれば幸いです。
それでは、読んで頂きありがとうございました!