302 votes

Comment trouver l'emplacement d'un exécutable dans Windows ?

Je me suis rappelé que j'ai utilisé un outil appelé comme where pour trouver l'emplacement de tout programme exécutable comme celui-ci dans une console :

 C:\Tmp\Where myTool.exe
 C:\Program Files\MyApp\myTools.exe
 ....

Maintenant, je ne peux pas trouver cet outil. Je ne sais pas si Windows dispose d'un outil intégré pour effectuer cette recherche ?

2 votes

0 votes

Si l'application est en cours d'exécution et que vous avez besoin de connaître son emplacement, utilisez Process Explorer (de Sys Internals).

7 votes

where a fonctionné pour moi sur Windows 7 Enterprise

550voto

Simon D Points 5631

Selon la réponse de Stack Overflow à Existe-t-il un équivalent de "which" sous Windows ? , where.exe fait cela sur Windows 7 et Windows Server 2003 et plus :

Exemple

C:\> where ping

Sortie :

C:\Windows\System32\PING.EXE

Dans PowerShell, utilisez where.exe , Get-Command (ou son abréviation gcm ), comme where est l'alias par défaut de Where-Object .

24 votes

Cette réponse devrait être considérée comme correcte car elle fonctionne sans installer de logiciel supplémentaire.

51 votes

Une partie importante de cette réponse est que dans powershell, where est un alias par défaut pour l'option Where-Object vous devez donc utiliser where.exe o gcm / Get-Command

2 votes

Et pour powershell. Comment puis-je réaliser la même chose en powershell ?

28voto

geo Points 625

EDIT : J'aurais dû ajouter que si vous ne pouvez pas utiliser la commande WHERE à partir de l'invite de commande, vérifiez votre variable PATH. (Utilisez simplement la commande "path".) Assurez-vous que C:\Windows\System32 est sur votre chemin. C'est là que se trouve "where.exe".

OÙ est la commande que vous cherchez ! WHERE est une sorte de croisement entre la commande intégrée UNIX Shell "which" et la commande "locate", dans la mesure où elle fonctionne à la fois pour les exécutables de commande et les fichiers ordinaires.

C'est aussi un peu plus complexe que ces deux-là, même si, en général, une simple

WHERE <file>

fonctionnera.

Elle est différente de la commande "locate" dans la mesure où elle ne recherche pas dans l'ensemble du système de fichiers. Au lieu de cela, le comportement par défaut est de rechercher les fichiers dans deux emplacements :

  • Le répertoire actuel.
  • Tous les répertoires de la variable PATH.

Ainsi, toute commande que vous pouvez exécuter directement à partir d'une invite de commande sans spécifier le répertoire, sera trouvée par la commande WHERE. (Parce que toute commande de ce type se trouve déjà dans la liste des variables PATH).

Si vous voulez chercher nur dans la variable du chemin de la commande, vous pouvez utiliser :

WHERE "$path:<search text>"

Si, par contre, vous voulez trouver toutes les copies d'un fichier dans une arborescence de répertoires, vous pouvez utiliser :

WHERE /R <Top Level Directory> <search text>

Enfin, WHERE trouvera les commandes et tout fichier ayant une extension dans la variable PATHEXT sans inclure l'extension. Tous les autres fichiers doivent être spécifiés soit exactement, soit avec des caractères génériques.

Prenez par exemple les fichiers "dxdiag.exe" et "dxdiagn.dll". Notez la commande suivante et son résultat :

WHERE /R C:\Windows dxdiag

C:\Windows\System32\dxdiag.exe
C:\Windows\SysWOW64\dxdiag.exe
C:\Windows\WinSxS\amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiag.exe
C:\Windows\WinSxS\x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiag.exe

Elle réussit à renvoyer toutes les versions de "dxdiag.exe" parce que ".exe" est l'une des extensions de la variable PATHEXT. (Remarque : "WHERE dxdiag" aurait également fonctionné, parce que C:\Windows\System32 est dans la variable PATH).

WHERE /R C:\Windows dxdiagn

d'autre part, ne renvoie aucun résultat, parce que ".dll" est pas dans PATHEXT.

Dans ce cas, regardez le résultat que l'ajout d'un joker nous donne :

WHERE /R C:\Windows dxdiagn*

C:\Windows\System32\dxdiagn.dll
C:\Windows\System32\en-US\dxdiagn.dll.mui
C:\Windows\SysWOW64\dxdiagn.dll
C:\Windows\SysWOW64\en-US\dxdiagn.dll.mui
C:\Windows\WinSxS\amd64_microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_daccd04369b09c70\dxdiagn.dll.mui
C:\Windows\WinSxS\amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiagn.dll
C:\Windows\WinSxS\x86_microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_7eae34bfb1532b3a\dxdiagn.dll.mui
C:\Windows\WinSxS\x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiagn.dll

Il retourne avec succès tous versions de dxdiagn.dll.

Pour plus d'informations, utilisez "WHERE / ?". J'espère que cela vous aidera !

3 votes

where where C:\Windows\System32\where.exe :)

1 votes

@vp_arth Je pensais exactement la même chose :)

19voto

stevec Points 375

Pour moi, ce qui a marché c'est

Get-Command chromedriver

qui renvoie quelque chose comme

CommandType     Name                       Version    Source
-----------     ----                       -------    ------
Application     chromedriver.exe           0.0.0.0    C:\WINDOWS\chromedriver.exe

Il suffit de remplacer chromedriver avec le programme que vous recherchez

14voto

Rob Jens Points 241

Notez que certaines choses peuvent être un peu différentes pour PowerShell :

PS C:\Users\Rob.wb-devel> where ping

PS C:\Users\Rob.wb-devel> where git

PS C:\Users\Rob.wb-devel> whereis.bat git
C:\Program Files (x86)\Git\cmd\git.exe

PS C:\Users\Rob.wb-devel> where.exe git
C:\Program Files (x86)\Git\cmd\git.exe

0 votes

Merci, cela fonctionne à la fois pour cmd et PowerShell.

1 votes

"whereis" whereis.bat ??? ;)

0 votes

Pour Powershell comme complément, voir mon commentaire sur la réponse de @john t.

13voto

Dalroth Points 2468

Utiliser dir :

cd \
dir /s /b mytool.exe

le site cd \ vous fait passer à la racine du lecteur, afin de garantir que la recherche commence au sommet de la hiérarchie.

0 votes

C'est comme faire une recherche Windows en ligne de commande.

8 votes

Cela fait une recherche récursive sur le disque et prendrait une éternité.

9 votes

La seule façon de trouver les exécutables qui N'EST PAS dans la variable d'environnement PATH est de le faire. Il n'a jamais spécifié son chemin, il a dit tout exécutable .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X