Digamos que tengo un programa X.EXEinstalado en la carpeta c:\abcd\happy\del sistema. La carpeta está en la ruta del sistema. Ahora suponga 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 escribo X.EXEcuál de los dos X.EXEse lanzará? (pero sin tener que buscar ni mirar los detalles del proceso en el Administrador de tareas).
¿Tal vez algún tipo de comando incorporado, o algún programa que pueda hacer algo como esto? :
detect_program_path X.EXE
                
                    
                        windows
                                command-line
                                path
                                
                    
                    
                        Zabba
fuente
                
                fuente

Respuestas:
Usa el
wherecomando. El primer resultado en la lista es el que se ejecutará.De acuerdo con esta publicación de blog ,
where.exese incluye con Windows Server 2003 y versiones posteriores, por lo que esto debería funcionar con Vista, Win 7 y otros.En Linux, el equivalente es el
whichcomando, por ejemplowhich ssh.fuente
listdlls -d foo.dllpara ver todos los procesos que tienen el módulo cargado y la ruta completa al módulo cargado. Alternativamente, puede hacer una búsqueda de archivos de Windows para el nombre del archivo.Aquí hay un pequeño script de cmd que puede copiar y pegar en un archivo llamado algo así como
where.cmd:fuente
Como el hilo mencionado en el comentario,
get-commanden powershell también puede solucionarlo. Por ejemplo, puede escribirget-command npmy la salida es la siguiente:fuente
(get-command npm).Sourceresponderá solo con la ruta a npm (por ejemplo) en lugar de la tabla completa de todas las propiedades.