Trouver le chemin du programme qui s’exécutera à partir de la ligne de commande dans Windows

Disons que j’ai un programme X.EXE installé dans le dossier c:\abcd\happy\ sur le système. Le dossier est sur le chemin du système. Supposons maintenant qu’un autre programme du système appelé X.EXE soit installé dans le dossier c:\windows\ .

Est-il possible de savoir rapidement à partir de la ligne de commande si je tape dans X.EXE lequel des deux X.EXE sera lancé? (mais sans avoir à rechercher dir ou regarder les détails du processus dans le Gestionnaire des tâches).

Peut-être une sorte de commande intégrée, ou un programme qui peut faire quelque chose comme ça? :

 detect_program_path X.EXE 

    Utilisez la commande where . Le premier résultat de la liste est celui qui sera exécuté.

     C: \> où le bloc-notes
     C: \ Windows \ System32 \ notepad.exe
     C: \ Windows \ notepad.exe
    

    Selon ce billet de blog , where.exe est inclus dans Windows Server 2003 et versions ultérieures, cela devrait donc fonctionner avec Vista, Win 7, et al.

    Sous Linux, l’équivalent est la commande which , par exemple which ssh .

    Voici un petit script cmd que vous pouvez copier-coller dans un fichier nommé 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 

    Comme le thread mentionné dans le commentaire, get-command in powershell peut également résoudre ce problème. Par exemple, vous pouvez taper get-command npm et la sortie est comme ci-dessous:

    entrer la description de l'image ici