Когда я запускаю приложение из cmd-строки, как мне найти путь к exe?

3057
Mal Ross

Когда я запускаю приложение из командной строки DOS в Windows, рассматриваемая команда часто находится не в текущем каталоге, а находится через переменную среды PATH. Какой самый быстрый способ найти путь к самому исполняемому EXE-файлу?

7
«путь» дает вам список, вы можете проверить каждый вручную. Хоть и не рассеянный удар; перед возвращением, или вам, возможно, придется потратить 10 минут на восстановление своего пути, как я только что сделал> _ < Phoshi 14 лет назад 1

5 ответов на вопрос

7
T. Kaltnekar

В Vista вы можете ввести имя исполняемого файла в поле поиска в меню «Пуск», когда оно отобразится в результатах, щелкните правой кнопкой мыши и выберите «Открыть местоположение файла» из меню.

Если программа все еще работает и вы используете Process Explorer из Sysinternals, вы можете щелкнуть по исполняемому файлу в списке процессов и выбрать свойства. На вкладке Image у вас есть путь к исполняемому файлу.

Другой способ - использовать Windows Powershell, использовать команду «get-command исполняемый файл» без кавычек, и вы получите путь для искомого исполняемого файла. Ярлык для команды gcm, поэтому используйте вот так "gcm calc"

Принимая этот ответ, так как он напрямую касается моего вопроса. Подход к Powershell тоже кажется самым быстрым. :) * К сожалению ... * Я хочу найти путь к EXE после запуска отдельного пакетного файла DOS, который изменяет переменную среды PATH. В Powershell для запуска пакетного файла требуется отдельный cmd.exe, что означает, что путь PATH ** в Powershell ** не затронут, и поэтому мой целевой файл exe (tf.exe) все еще не может быть найден. Тем не менее, я должен был сказать это в своем вопросе. Просто не думал, что это было важно в то время. : - / Mal Ross 14 лет назад 1
Используя диспетчер задач в Windows 7 (возможно, и в Vista), вы также можете щелкнуть правой кнопкой мыши по процессу и выбрать «Открыть местоположение файла». Для этого вам не нужно устанавливать стороннее программное обеспечение, такое как Process Explorer. Если вы знаете имя процесса, вы также можете набрать `get-process processname | % {$ _. path} `чтобы найти путь к исполняемому файлу. Однако это работает не для каждого процесса. Я еще не нашел правила для этого ... wullxz 11 лет назад 1
5
izb

Если у вас установлен Cygwin, вы всегда можете использовать команду which

C:> which notepad /c/WINDOWS/system32/notepad 
отлично. но попробуйте ", который реж" ... nik 14 лет назад 0
+1, мне нравится идея - просто для этого нужна среда Unix. Вы также можете использовать бинарный файл UnixUtil. http://unxutils.sourceforge.net nik 14 лет назад 0
Есть несколько реализаций, которые работают без подсистемы Unix Xetius 14 лет назад 0
3
Orient

Try the following:

@rem file which.bat (must be placed somewhere in %PATH%) @for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i 

When you type which notepad in commandline (cmd.exe):

C:\>which notepad C:\Windows\System32\notepad.exe 
не работает ... Chazt3n 8 лет назад 0
@ Chazt3n На данный момент это звучит необоснованно. Пожалуйста, объясните, как вы используете? Orient 8 лет назад 0
2
Jesse

Если вы спрашиваете о программе, запущенной в данный момент, Windows не предлагает ничего из коробки для командной строки, насколько мне известно, которая дает вам полный путь к исполняемому файлу.

Если вы спрашиваете о программе, которую вы можете вызвать из командной строки, то вы можете использовать whereкоманду:

C:\> where fsutil C:\Windows\System32\fsutil.exe  C:\> 

Это работает для всех программ, которые вы можете вызывать в текущей переменной PATH или в текущем рабочем каталоге. Он не обнаружит встроенные команды, такие как DIR, но этого и следовало ожидать.

В качестве примечания, инструмент where не включен по умолчанию для Windows XP и более ранних версий. Я считаю, что Microsoft начала включать его с Vista или 7, но у меня нет ни одного доступного для подтверждения. Jesse 9 лет назад 0
0
Col

Вы могли бы попробовать

CD \ dir /s command.* 

или из проводника просто выполните поиск по имени команды.