Показать путь к исполняемому файлу EXE в командной строке в Windows


26

Как я могу показать полный путь к файлу EXE каждого запущенного процесса из командной строки в Windows?

Я попытался Tasklist и PsList , но они не показывают полный путь:

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 (:
Jeroen Wiert Pluimers

вам не нужен ':(', ваш метод очень аккуратный, и вы быстро его нашли
barlop

1
Я должен быть аутичным! Может быть, вы должны положить нос в смайлик, чтобы прояснить
ситуацию

1
@kayleeFrye_onDeck Я добился большего успеха, выполняя решения под токеном UAC с повышенными правами, но очень хотелось бы, чтобы была версия technet.microsoft.com/en-us/sysinternals/processexplorer.aspx для командной строки , позволяющая осуществлять надежные запросы по этому токену.
Йерун Wiert Pluimers

Ответы:


26

В дополнение к приведенной вами строке, здесь есть несколько строк, которые (помимо второй) можно использовать для перечисления путей:

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

это преимущество в том, что он быстрый, (wmic), потому что powershell так чертовски медленен !!!
Мистер Робот

Будьте очень внимательны к используемому форматированию. Например, если не включить одинарные кавычки в nameполе, это может привести к поломке.
kayleeFrye_onDeck

@kayleeFrye_onDeck хорошо, учитывая длину команды, я бы ожидал, что кто-то просто скопирует / вставит ее и просто поменяет имя процесса. Так что, надеюсь, им не следует ошибаться, пропуская одинарные кавычки вокруг имени процесса, поскольку они могут оставить те, которые там есть.
Бароп

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 Мне они не нужны, но я думаю, что вы можете получить их, StartInfoа не на Pathоснове stackoverflow.com/questions/1012409/…
Йерун Вирт Плюмерс

@ jpmc26 пути к файлам, которые выводит команда wmic, совпадают с путями к файлам, которые выводит команда powershell ........, например, откройте калькулятор Windows и попробуйте его для calc.exe pastebin.com/raw/TK8xSPPL
Барлоп

Что делает морковь в первой команде?
Джаред Бич

6

Труба PowerShell Get-Processв Select-Object.

Пример команды для Notepad ++:

Get-Process notepad++ | Select-Object Path

Выход:

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

Чтобы получить вывод напрямую (Get-Process notepad++).Path(возможно, для хранения в переменной).
nawfal
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.