para - Encontrar la ruta del programa que se ejecutará desde la línea de comando en Windows
comandos de cmd para hackear (3)
Digamos que tengo un programa X.EXE
instalado en la carpeta c:/abcd/happy/
en el sistema. La carpeta está en la ruta del sistema. Ahora supongamos que hay otro programa en el sistema que también se llama X.EXE pero está instalado en la carpeta c:/windows/
.
¿Es posible descubrir rápidamente desde la línea de comandos que si X.EXE
en X.EXE
cuál de los dos X.EXE
se lanzará? (pero sin tener que buscar directorios o mirar los detalles del proceso en el Administrador de tareas).
¿Tal vez algún tipo de comando integrado, o algún programa que pueda hacer algo como esto? :
detect_program_path X.EXE
Aquí hay un pequeño script cmd que puedes copiar y pegar en un archivo llamado algo así 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
Como el thread mencionado en el comentario, get-command
en powershell también puede resolverlo. Por ejemplo, puede escribir get-command npm
y la salida es la siguiente:
Usa el comando where
El primer resultado en la lista es el que se ejecutará.
C:/> where notepad C:/Windows/System32/notepad.exe C:/Windows/notepad.exe
De acuerdo con esta publicación del blog , where.exe
se incluye con Windows Server 2003 y posterior, por lo que esto debería funcionar solo con Vista, Win 7, et al.
En Linux, el equivalente es el comando, por ejemplo, which ssh
.