Windowsのコマンドラインで実行中のプロセスのEXEファイルパスを表示する


26

Windowsのコマンドラインから実行中の各プロセスの完全なEXEファイルパスを表示するにはどうすればよいですか?

tasklistpslistを試しましたが、完全なパスは表示されません。

tasklist /FI "ImageName eq Spring.Tests.exe" /v /fo List

与える:

Image Name:   Spring.Tests.exe
PID:          3956
Session Name: Console
Session#:     1
Mem Usage:    9,772 K
Status:       Running
User Name:    W81ENTX64DELPHI\Developer
CPU Time:     0:00:01
Window Title: Spring

そして

pslist Spring.Tests -x

与える:

Name                Pid      VM      WS    Priv Priv Pk   Faults   NonP Page
Spring.Tests       3956   83472    9772    5320    5692     5037     11  157
 Tid Pri    Cswtch            State     User Time   Kernel Time   Elapsed Time
1488  10     11018     Wait:UserReq  0:00:00.906   0:00:01.046    0:53:06.977

Spring.Tests.exeさまざまなディレクトリにある可能性があるため、どのディレクトリが実行されたかを知りたいです。


1
ああ、これは古典的な質問です。タスクマネージャーが列を持っていることに加えて。コマンドラインの場合、WMICおよびpowershellはできます。それはここかStackOverflowの上でも、上のだ...場所の上にすべてをでなければなりません...実は私はそれのノートを持っている、それは完全にここで答えを見ることができない..私がチェックします
barlop

@barlopそれは面白いです:あなたはあなたのコメントを書いている間、私はいくつかやってのだと、私はすでに、PowerShellを使って実験して実験し、他のPowerShellを同様に(:
イェルーンWiert Pluimers

必要性「:(」あなたの方法は非常に巧妙ではありません、あなたは速い、それを見つけた
barlop

1
私は自閉症でなければなりません!たぶん、あなたはそれをより明確にするためにスマイリーに鼻を置く必要があります
;

1
@kayleeFrye_onDeck昇格したUACトークンの下でソリューションを実行することでより良い成功を収めましたが、そのトークンの下で信頼できるクエリを実行できるtechnet.microsoft.com/en-us/sysinternals/processexplorer.aspxのコマンドラインバージョンがあればいいのにと思います。
Jeroen Wiert Pluimers

回答:


26

指定した行に加えて、パスをリストするために使用できる(2番目の行を除く)行があります。

PS C:\> gwmi win32_process | select Handle, CommandLine | format-list
PS C:\> gwmi win32_process | select name
PS C:\> gwmi win32_process | select CommandLine
C:\>wmic process get ProcessID,ExecutablePath
C:\>wmic process where "name='mysqld.exe'" get ProcessID, ExecutablePath
C:\>wmic process where "name='mysqld.exe'" get ProcessID, ExecutablePath /FORMAT:LIST

これには、powershellが非常に遅いので(wmic)高速であるという利点があります!!!
ミスターロボット

使用するフォーマットに注意してください。たとえば、nameフィールド内に一重引用符を含めないと、これが壊れます。
kayleeFrye_onDeck

@kayleeFrye_onDeckよく、コマンドの長さを考えると、誰かがとにかくそれをコピー/貼り付けして、プロセスの名前を変更するだけだと思います。したがって、プロセス名の前後に一重引用符が欠落しているという間違いをしてはいけません。
-barlop

9

PowerShellが助けになります。

まず、Get-Memberを使用して、Get-Processが返す可能性のあるものを確認しました。

PowerShell Get-Process ^| Get-Member

次に、Get-Processからのパスフィルター処理して、Spring.Tests実行中のプロセスを特定しました。

PowerShell Get-Process Spring.Tests ^| Format-List Path

その結果:

Path : C:\Users\Developer\Versioned\Spring4D\Tests\Bin\DelphiXE\Spring.Tests.exe

これはまさに私が欲しかった情報です。


1
そこWMICはあまりにもですが、PowerShellは、より現代的で柔軟性がある
barlop

あるPathコマンドラインと同じことは?実行可能ファイルの引数はどうですか?@barlop WMIには、PowerShellでは利用できない多くの機能がまだあります。
jpmc26

@ jpmc26これらは必要ありませんでしたが、stackoverflow.comStartInfoPath
questions / 1012409

@ jpmc26 WMICコマンドの出力は、PowerShellのコマンド........が出力例えば、開いているウィンドウの計算はとCALC.EXEのためにそれをしようとするファイルのパスと同じであることをファイルパスpastebin.com/raw/TK8xSPPL
-barlop

ニンジンは最初のコマンドで何をしますか?
ジャレッドビーチ

6

PowerShellをにパイプGet-ProcessSelect-Objectます。

Notepad ++のコマンド例:

Get-Process notepad++ | Select-Object Path

出力:

Path
----
D:\Notepad++\notepad++.exe

出力を直接取得するには(Get-Process notepad++).Path(変数に保存するのがよいでしょう)。
nawfal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.