あとは、各プロセスが処理しているファイルの名前です。
バックグラウンド
問題は、作業中のファイルの名前(実行可能ファイルの名前とは異なり)がタスクリストの出力や、他の標準的なコマンドラインツールの出力に表示されないことです。
プロセスは常にそれが開いているファイルの内部リストを持っています - これらはプロセスの "handleテーブル"にあります。これは例えばに見られる。プロセスエクスプローラ、しかしあなたはコマンドラインツールが欲しい。そして、プロセスが開いているすべてのファイルの中から、プロセスが編集のために開いている文書がどれであるかを知る一般的な方法はありません。
しかしながら。メモ帳、Officeスイート、その他多くのアプリケーションを含む一部のアプリケーションは、ウィンドウのタイトルにファイル名を設定します。例えば"Notepad file1.txt"これはあるアプリケーションから別のアプリケーションへの一貫した形式ではありません。アプリは、ウィンドウのタイトルを好きなものに設定できます。たとえば、プログラムは自分自身の名前を最初に置き、次にファイル名を置くことができます。なんでも。
それで、あなたはウィンドウタイトルを見たいです。タスクマネージャはウィンドウのタイトルを表示できますが、コマンドラインツールが必要です。 JosefZが指摘するように、tasklist / vはこれをすることができます。 (それを実行するtlistと呼ばれる小さなプログラムもあります。それはWindows Debugging Toolsパッケージに付属しています。)しかし、これらはあなたが望むプロセスに加えて、ウィンドウ名を持っていないプロセスの全体の束を示します。 。
回答
PowerShellを使って救助しましょう。コマンドプロンプトでこれを試してください。(c:\にいる必要はありません。これは単なる例です)
c:\> powershell -command "get-Process | where-Object {$_.mainWindowTitle} | format-table id,name,mainwindowtitle -AutoSize"
これは空でないウィンドウタイトルを持つすべてのプロセスをリストします。
メモ帳のように、特定のプログラムを実行しているプロセスを見たいだけであれば、この名前を最初のパイプの前に置くことができます。
c:\> powershell -command "get-Process notepad | where-Object {$_.mainWindowTitle} | format-table id,name,mainwindowtitle -AutoSize"
これは、get-Processの出力が残りのコマンドに到達する前にそれをフィルタリングします。 where-Objectコマンドは空でないウィンドウタイトルをフィルタリングし、format-tableは結果をきれいなテーブルに格納するだけです。
それでは、簡単にしましょう。以下を.cmdファイルに入れて、あなたがそれをwn.cmd(windownameのためのwn)と呼ぶとしましょう。あなたのパスにあるディレクトリにwn.cmdを置いてください。 (私はいつもc:\ progsという名前のディレクトリを作成し、それを自分のパスに追加します。これにはちょっとしたことがあります。sysinternalsツールもそのディレクトリに入れます)
c:\> @echo off
c:\> powershell -command "get-Process %1 | where-Object {$_.mainWindowTitle} | format-table id,name,mainwindowtitle -AutoSize"
例
今、コマンドプロンプトで...あなたのパスのどこかにwn.cmdがあると仮定して...あなたはただタイプすることができます
c:\> wn
そして、名前付きのウィンドウを持つプロセスの完全なリストが得られます。
Id Name MainWindowTitle
-- ---- ---------------
9596 chrome How can I show the file NAME of each running process from the command-line in Windows? - Super ...
11980 cmd Command Prompt - wn
10164 explorer progs
10180 Horas Horas - Fri 11
2520 notepad windownames.ps1 - Notepad
15348 notepad notes2.txt - Notepad
8304 OUTLOOK Inbox - mailbox - Outlook
17312 powershell_ise Windows PowerShell ISE
6140 TTool103 Alarm
あなたが入力した場合。
c:\> wn notepad
あなたはメモ帳を実行しているものだけを得る:
Id Name MainWindowTitle
-- ---- ---------------
6240 notepad Untitled - Notepad
13096 notepad wn.cmd - Notepad
15348 notepad notes2.txt - Notepad
(この選択は、ウィンドウのタイトルではなく、実行可能ファイル名によって行われます。)
クレジットが支払期日であるクレジット 私はからの名前付きウィンドウでプロセスを一覧表示するためのオリジナルのPowerShellの "スクリプト"を見つけました powershell.comのこのページ 。それを.cmdファイルにパッケージ化するだけで、使いやすくなります。
"tokens=2,9 delims=,"とタスクリスト/v冗長なパラメータ… do @echo %~F:%~G。