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

1voto

Anupam Points 111

Dans PowerShell

(@($env:path.split(";")) + (pwd).Path)  | where { dir $_ -ErrorAction SilentlyContinue |? Name -eq foo.exe }

Vous pouvez facilement convertir cela en un Cmdlet.

Une autre façon d'accomplir ceci, comme suggéré dans une édition :

get-command notepad.exe | select Source

0voto

bobbogo Points 1153

Heh, je dois juste poster ce fichier batch unique de Windows :

C:>type wh.cmd
@for %%f in (%*) do for %%e in (%PATHEXT% .dll .lnk) do for %%b in (%%f%%e) do for %%d in (%PATH%) do if exist %%d\%%b echo %%d\%%b

Un test :

C:>wh ssh
C:\cygwin64\bin\ssh.EXE
C:\Windows\System32\OpenSSH\\ssh.EXE

Ce n'est pas tout à fait un "one-liner" si vous enroulez le code dans setlocal enableextensions y endlocal qui sont nécessaires pour les utilisateurs dont les extensions ne sont pas activées par défaut.

0voto

WHERE est génial, mais lent. J'ai trouvé que l'interrogation du registre était plus rapide, mais moins fiable, alors j'ai combiné les deux idées dans une fonction comme celle-ci :

app_path_func.cmd :

@ECHO OFF
CLS

FOR /F "skip=2 tokens=1,2* USEBACKQ" %%N IN (`reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\%~1" /t REG_SZ  /v "Path"`) DO (
 IF /I "%%N" == "Path" (
  SET wherepath=%%P%~1
  GoTo Found
 )
)

FOR /F "tokens=* USEBACKQ" %%F IN (`where.exe %~1`) DO (
 SET wherepath=%%F
 GoTo Found
)

FOR /F "tokens=* USEBACKQ" %%F IN (`where.exe /R "%PROGRAMFILES%" %~1`) DO (
 SET wherepath=%%F
 GoTo Found
)

FOR /F "tokens=* USEBACKQ" %%F IN (`where.exe /R "%PROGRAMFILES(x86)%" %~1`) DO (
 SET wherepath=%%F
 GoTo Found
)

FOR /F "tokens=* USEBACKQ" %%F IN (`where.exe /R "%WINDIR%" %~1`) DO (
 SET wherepath=%%F
 GoTo Found
)

:Found
SET %2=%wherepath%
:End

Test :

@ECHO OFF
CLS

CALL "app_path_func.cmd" WINWORD.EXE PROGPATH
ECHO %PROGPATH%

PAUSE

Résultat :

C:\Program Files (x86)\Microsoft Office\Office15\WINWORD.EXE
Press any key to continue . . .

https://www.freesoftwareservers.com/display/FREES/Find+Exécutable+via+Batch+-+Microsoft+Office+Exemple+-+WINWORD+-+Find+Microsoft+Office+Path

-2voto

Si vous avez juste besoin du chemin pour le lancer, il est souvent préférable d'utiliser la commande start. Par exemple, vous pouvez utiliser "start chrome.exe" pour lancer Chrom{e|ium}, quel que soit l'endroit où il est installé.

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