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


Je me suis souvenu que j'ai utilisé un outil appelé comme where trouver des emplacements pour tout programme exécutable comme celui-ci dans une console:

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

Maintenant, je ne trouve pas cet outil. Vous ne savez pas si Windows dispose d'un outil intégré pour effectuer cette recherche?


104
2017-09-30 17:06


origine


Diverses réponses sur Y a-t-il un équivalent de «qui» sur Windows? - débordement de pile - Satanicpuppy
Si l'application est en cours d'exécution et que vous devez connaître son emplacement, utilisez Process Explorer (à partir de Sys Internals). - Ganesh R.
where travaillé pour moi sur Windows 7 Enterprise - Bohemian
PAGING OP: Veuillez mettre à jour la réponse acceptée :) - Jake
@ David.Chu.ca veuillez mettre à jour la réponse acceptée - Matt Frear


Réponses:


Je pense que vous pensez peut-être à la lequel commande sous Linux.

$ which bash
/bin/bash

Je ne suis pas au courant d'un outil équivalent dans Windows.

MODIFIER: Je viens de me rappeler qu'il y a un paquet appelé Unix Utils pour Windows qui fournirait cette fonctionnalité pour vous.


5
2017-09-30 17:11



github.com/bmatzelle/gow/wiki est un descendant des Unix Utils, plus pratique à utiliser, appelé Gnu sous Windows. Il a plus d'utilitaires et un installateur. - Simon D
Bon sang, je ne peux pas décrocher. L'OP était correct et il y a un "where.exe". Voir la réponse ci-dessous ici: superuser.com/a/440904/59929 - Piers Karsenbarg
Voulu réduire ici mais la formulation de la question en fait une réponse valide: I remembered that I used a tool...Now I cannot find this tool. Not sure if Windows has [it]. - Ben


Selon la réponse de StackOverflow à Y a-t-il un équivalent de «qui» sur Windows?, where.exe fait cela sur Windows 7 et Windows Server 2003 et versions ultérieures:

Exemple

C:\> where ping

Sortie:

C:\Windows\System32\PING.EXE

247
2018-06-24 11:41



Cela devrait être considéré comme la bonne réponse car il fonctionne sans installer de logiciel supplémentaire - Cookie
Une partie importante de cette réponse est que dans powershell, where est un alias par défaut pour le Where-Object, donc vous devez plutôt utiliser where.exe, ou gcm/Get-Command - Dave Andersen


MODIFIER:  J'aurais dû ajouter, 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 is est la commande que vous recherchez! WHERE est comme un croisement entre le shell UNIX intégré "which" et la commande "locate", en ce sens qu'il fonctionne à la fois pour les fichiers exécutables de commandes et les fichiers réguliers.

Il est également un peu plus complexe que l’un ou l’autre, bien qu’en général simple

WHERE <file>

marchera.

Il est différent de la commande "Locate" en ce sens qu'il ne regarde pas à travers le système de fichiers entier. Au lieu de cela, le comportement par défaut consiste à rechercher des fichiers à deux emplacements:

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

Ainsi, toute commande que vous pouvez exécuter directement depuis une invite de commande sans spécifier le répertoire sera trouvée par la commande WHERE. (Parce que toute commande comme celle-là est déjà dans la liste de variables PATH.)

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

WHERE "$path:<search text>"

Si, par contre, vous souhaitez rechercher 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 tous les fichiers avec une extension de la variable PATHEXT sans inclure l'extension. Tous les autres fichiers doivent être spécifiés exactement ou avec des caractères génériques.

Prenons par exemple les fichiers "dxdiag.exe" et "dxdiagn.dll". Notez la commande suivante et sa sortie:

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

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

WHERE /R C:\Windows dxdiagn

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

Dans ce cas, regardez le résultat que l'ajout d'un caractère générique 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 tout versions de dxdiagn.dll.

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


13
2017-09-27 01:23



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


utilisation dir:

cd \
dir /s /b mytool.exe

la cd \ partie vous change à la racine du lecteur, pour vous assurer que la recherche commence en haut de la hiérarchie.


8
2017-09-30 17:15



Cela semble être une ligne de commande Windows Search. - Ganesh R.
Cela fait une recherche récursive du lecteur et prendrait une éternité. - djhowell
La seule façon de trouver des exécutables NE SONT PAS dans la variable d'environnement PATH est de faire cela. Il n'a jamais précisé son chemin, il a dit tout exécutable. - John T
il trouve l'exécutable mais prend du temps. - Michael Z
ceci bien sûr ne fonctionne que si vous connaissez le nom de l'exécutable ou au moins une partie du nom - Oliver Williams


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

4
2018-04-07 12:52





Frustrant qu'il ne soit pas intégré en tant que simple commande.

Cependant, il y a plusieurs solutions, dont l'une est une fichier de commandes.

Créez un fichier de commandes (which.bat) comme suit:

@setlocal
@set P2=.;%PATH%
@for %%e in (%PATHEXT%) do @for %%i in (%~n1%%e) do @if NOT "%%~$P2:i"=="" echo %%~$P2:i 

Cela recherche dans le répertoire local, prend un paramètre de nom de fichier avec ou sans extension, et renvoie la première correspondance à partir du répertoire en cours ou du PATH.

Puis lancez-le comme which cmd.exe trouver le cmd.exe qui va exécuter si vous tapez dans cmd.


3
2017-09-30 18:23





Sur Windows, vous pouvez utiliser l'utilitaire gratuit Tout moteur de recherche chercher immédiatement pour tout fichier par nom complet ou partiel (si votre disque dur est formaté en NTFS).


3
2017-09-30 19:26



Différence de nuit et de jour entre cette recherche et celle de Windows. - AnthonyVO


Si tu veux juste lequel, la GnuWin32 projet a un tas d'utilitaires Unix avec des installateurs individuels.


1
2017-09-30 17:19