160 votes

Recherche du chemin du programme à exécuter à partir de la ligne de commande sous Windows

Dire que j'ai un programme X.EXE installé dans le dossier c:\abcd\happy\ sur le système. Le dossier est sur le chemin d'accès système. Supposons maintenant qu'il existe un autre programme sur le système qui est aussi appelé X.EXE mais est installé dans le dossier c:\windows\.

Est-il possible de savoir rapidement à partir de la ligne de commande que si je type en X.EXE lequel des deux X.EXE's va être lancé? (mais sans avoir à dir de recherche ou de regarder les détails du processus dans le Gestionnaire des Tâches).

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

detect_program_path X.EXE

285voto

Chris Schmich Points 16390

Utiliser l' where commande. Le premier résultat de la liste est celui qui va l'exécuter.

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

Selon ce blog, where.exe est fourni avec Windows Server 2003 et plus tard, donc cela devrait fonctionner avec Vista, Win 7, et al.

Sur Linux, l'équivalent est l' which de commande, par exemple, which ssh.

10voto

Michael Burr Points 181287

Voici un petit script cmd que vous pouvez copier-coller dans un fichier portant le nom de 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
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X