program - path windows 2012



Encontrando o caminho do programa que será executado a partir da linha de comando no Windows (2)

Digamos que eu tenha um programa X.EXE instalado na pasta c:\abcd\happy\ no sistema. A pasta está no caminho do sistema. Agora, suponha que exista outro programa no sistema que também é chamado X.EXE, mas está instalado na pasta c:\windows\ .

É possível descobrir rapidamente a partir da linha de comando que, se eu digitar X.EXE qual dos dois X.EXE será iniciado? (mas sem ter que dir pesquisa ou olhar para os detalhes do processo no Gerenciador de Tarefas).

Talvez algum tipo de comando embutido, ou algum programa lá fora, que possa fazer algo assim? :

detect_program_path X.EXE

Answer #1

Aqui está um pequeno script cmd que você pode copiar e colar em um arquivo chamado algo como 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

Answer #2

Como o thread mencionado no comentário, get-command no powershell também pode funcionar. Por exemplo, você pode digitar get-command npm e a saída é como abaixo:





path