私のマシンで実行中のプロセスの配列を構築しようとしています。これを行うには、次の2つのコマンドを使用しようとしています。JavaでWindowsタスクリストの出力を解析する
tasklist /fo csv /nh # For a CSV output
tasklist /nh # For a non-CSV output
出力が正しく解析できないという問題があります。
最初のシナリオ
私のようなラインしている:それは、プロセスのメモリ使用量に来るとき、私は"".split(",")
を使用して解析することを試みてきた
"wininit.exe","584","Services","0","5,248 K"
が、しかし、これは失敗した - でコンマnumberフィールドは余分なフィールドになります。私はしかし、この1つは、今System Idle Process
のようなプロセスに失敗し"".split("\\s+")
を使用して解析しようとしています
wininit.exe 584 Services 0 5,248 K
:
2つ目のシナリオ非CSV出力なし
、私のようなラインを持っています、または実行可能な名前のスペースを持つ他のプロセス。
これらの出力のどちらかを解析して、同じ分割インデックスに常に正しいデータ列が含まれるようにするにはどうすればよいですか?
コンマで区切る代わりにCSVパーサーを使用しようとしましたか? CSVは一般によく定義されており、良いパーサーは引用符を正しく解釈し、コンマごとに分割するのではありません。 – cello
可能な限り少ない数の外部ライブラリを使用して、これを達成したいと思います。タスクは、最も簡単なアプローチで、最高のアプローチが何であるか不思議に思えます。 –