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: