Поиск пути к программе, которая будет выполняться из командной строки в Windows - PullRequest
117 голосов
/ 23 октября 2010

Скажем, у меня установлена ​​программа X.EXE в папке c:\abcd\happy\ в системе. Папка находится в системном пути. Теперь предположим, что в системе есть другая программа, которая также называется X.EXE, но установлена ​​в папку c:\windows\.

Можно ли быстро узнать из командной строки, что если я наберу X.EXE, какой из двух X.EXE будет запущен? (но без необходимости поиска или просмотра деталей процесса в диспетчере задач).

Может быть, какая-то встроенная команда или какая-нибудь программа, которая может сделать что-то подобное? :

detect_program_path X.EXE

Ответы [ 3 ]

213 голосов
/ 23 октября 2010

Используйте команду where.Первый результат в списке - тот, который будет выполнен.

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

Согласно это сообщение в блоге , where.exe включено в Windows Server 2003 и более поздние версии, поэтому это должноработа с Vista, Win 7 и др.

В Linux эквивалентом является команда which, например which ssh.

9 голосов
/ 23 октября 2010

Вот небольшой сценарий cmd, который вы можете скопировать и вставить в файл с именем типа where.cmd:

@echo off
rem - search for the given file in the directories specified by the path, and display the first match
rem
rem    The main ideas for this script were taken from Raymond Chen's blog:
rem
rem         http://blogs.msdn.com/b/oldnewthing/archive/2005/01/20/357225.asp
rem
rem
rem - it'll be nice to at some point extend this so it won't stop on the first match. That'll
rem     help diagnose situations with a conflict of some sort.
rem

setlocal

rem - search the current directory as well as those in the path
set PATHLIST=.;%PATH%
set EXTLIST=%PATHEXT%

if not "%EXTLIST%" == "" goto :extlist_ok
set EXTLIST=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
:extlist_ok

rem - first look for the file as given (not adding extensions)
for %%i in (%1) do if NOT "%%~$PATHLIST:i"=="" echo %%~$PATHLIST:i

rem - now look for the file adding extensions from the EXTLIST
for %%e in (%EXTLIST%) do @for %%i in (%1%%e) do if NOT "%%~$PATHLIST:i"=="" echo %%~$PATHLIST:i
4 голосов
/ 16 декабря 2017

Как указано в комментарии thread , get-command в powershell также может сработать.Например, вы можете ввести get-command npm, и результат будет следующим:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...