Question Windows équivalent de whereis?


Y a-t-il un équivalent de l'Unix où se trouve commande sous Windows?

Pour que je puisse déterminer où se trouvent les commandes que je peux exécuter.


145
2017-08-11 10:50


origine




Réponses:


le  La commande fait ce que vous voulez et remonte au moins au kit de ressources pour Windows 98, et est incluse par défaut dans Server 2003, Vista et versions ultérieures:

C:\>where csc
C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe

S'il est exécuté sans arguments (sous Vista), il en résulte l'un de mes messages préférés:

C:\>where
ERROR: The operation completed successfully.

Si vous exécutez PowerShell, veillez à inclure «.exe» pour distinguer les alias ou scripts «où» du chemin. ('where' est un alias typique pour Where-Object.ps1)

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

174
2017-09-10 23:00



Chaque jour j'apprends quelque chose de nouveau ... - Rubens Mariuzzo
Genre de triste where renvoie simplement l'aide à l'utilisation maintenant dans Windows 7. Je voulais le voir pour moi-même: p - Svish
where non disponible sous XP - Tom Roggero
@ TomRoggero, j'aurais pu être plus clair. Il fait partie du kit de ressources facultatif commençant par Windows 98 et inclus uniquement dans l'installation de base pour la version après XP. - Kevin


pirate informatique qui.cmd:

@echo off
@set PATH=.;%PATH%

@rem 
@rem about:  something similar like the unix-alike-which, but with
@rem         within pure cmd
@rem 

if "%1" == "" (
    @echo Usage: 
    @echo.
    @echo   which 'cmd'
    @echo.
    @echo.if 'cmd' is not found, ERRORLEVEL is set to 1
    @echo.  
) else (
    ( @for %%f in (%1 %1.exe %1.cmd %1.bat %1.pif) do if not "%%~$PATH:f" == "" ( @echo %%~$PATH:f ) else @set ERRORLEVEL=1) 
)

6
2017-09-10 21:08



C'est un bon correctif pour les systèmes plus anciens, mais vous devez savoir qu'il en résulte quelques bizarreries. Il correspond aux répertoires, ne renvoie que le premier résultat trouvé dans le chemin d'accès pour chaque extension et doit inclure toutes les extensions trouvées dans la variable d'environnement PATHEXT. - Kevin
yah, c'est un peu mon vieux pirate, quand je l'ai collé ici j'ai immédiatement vu le potentiel de% PATHEXT% :) - akira


Veuillez utiliser  commander:

> where app.exe

C'est le meilleur moyen d'atteindre votre objectif.

Vous pouvez également utiliser la commande PowerShell:

> $env:path.Split(';') | gci -Filter app.exe

et la version étendue ressemble à ceci:

 > $env:path.Split(';') | select -Unique | ? {$_ -and (test-path $_)} | gci -Filter app.exe

6
2017-08-04 21:39



C'est la meilleure réponse - skan


Quelque part "dehors" j'ai trouvé ce fichier batch whereis.bat:

@for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i

Mise à jour: peut-être que je l'ai trouvé ici.


2
2017-11-09 05:00





Il y a au moins un Port Windows pour le which utilitaire.


1
2017-08-11 10:53





Une approche différente (GUI), mais regardez Tout.


0
2017-11-09 06:52



C'est quelque chose de différent. Cela ne vous aide certainement pas à répondre à la question "quel exécutable est exécuté exactement quand j'exécute la commande <command> dans le répertoire courant"et c'est ce que demande OP. - Dawid Ferenczy


Je cherchais ceci aujourd'hui et depuis que je suis sous XP sans le kit de ressources, je me suis tourné vers powershell avec la commande suivante:

dir -path c:\ -filter ffmpeg.* -r

0
2017-07-14 15:46



Je ne suis pas compétent en PowerShell mais il semble que vous cherchiez dans toute l'arborescence de répertoires. Ce n'est pas équivalent à where qui recherche uniquement dans le %PATH%. De plus, il est beaucoup plus lent et donne des erreurs pour les dossiers pour lesquels vous n'avez pas l'autorisation de lecture - phuclv
D'accord ... Je n'ai pas besoin d'une copie exacte de la fonctionnalité, juste la possibilité de localiser un programme. - KalenGi


function find ($string) { 
   Get-ChildItem -Path 'c:\' -Recurse -Filter $string; 
}

function whereis ($string) { 
   $superpath = "$env:Path;C:\Program Files;C:\Program Files (x86)";
   (echo $superpath).Split(';') | Get-ChildItem -Recurse -Filter $string; 
}

Exemple:

PS> trouver Mozilla.admx

    Directory: C:\Windows\PolicyDefinitions                                                                                     

Mode                LastWriteTime         Length Name                                                                           
----                -------------         ------ ----                                                                           
-a----        1/27/2016  12:22 PM          37146 Mozilla.admx                                                                   

PS> whereis firefox.exe

    Directory: C:\Program Files\Mozilla Firefox                                                                                 

Mode                LastWriteTime         Length Name                                                                           
----                -------------         ------ ----                                                                           
-a----        9/21/2017   5:30 PM         477136 firefox.exe        

0
2017-10-05 14:19





Vous pouvez essayer de rechercher la commande en utilisant les éléments suivants:

dir /s type-whatever-you-are-searching

-1
2017-08-11 13:04



Cela ne fonctionne pas pour moi. Par exemple, la commande exp est sur mon chemin, mais dir / s exp ou dir / s exp.exe donne juste "Fichier introuvable". - bobmcn
Cela fonctionnerait si a) vous effectuez une recherche à partir de la racine du lecteur, b) votre chemin est sur un seul lecteur, et c) votre chemin est dans l'ordre lexicographique. Même dans ces conditions, il sera ridiculement lent. - Kevin