Quel est l'équivalent Windows de la commande "qui" sous Unix? Existe-t-il une commande PowerShell équivalente?


Réponses:


79

Certaines versions de Windows (je pense que Windows 2003 et versions ultérieures) ont la commande where:

c:\>where ping
C:\Windows\System32\PING.EXE

5
wheretravaille pour moi dans Windows 7
Nam G VU

6
Cela ne fonctionne que dans cmd, pas dans PowerShell (selon mon expérience)
Thomas

where /r c:\ fileNamel'ajout de / rc: \ m'a permis d'effectuer une recherche récursive à partir de la racine du lecteur C sous Windows 7 Professionnel, mais il semble que ce ne soit pas dans access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…
CrandellWS

6
dans Powershell, vous devriez le dire where.exe pingcar wherec'est par défaut un alias de la Where-Objectcmdlet qui est une histoire complètement différente
maoizm

where.exeexplicitement plutôt que ne wherefonctionne pour moi dans PowerShell
drkvogel

36

Oui, vous Get-Commandtrouverez toutes les commandes, y compris les exécutables:

PS\> Get-Command ipconfig

Si vous voulez limiter les commandes aux exécutables uniquement:

PS\> Get-Command -CommandType Application

Trouvera tous les ex sur votre chemin. Il existe un alias pour une utilisation interactive:

PS\> gcm net* -CommandType Application

Pour obtenir le chemin d'un exécutable, vous pouvez utiliser la Pathpropriété de l'objet renvoyé. Par exemple:

PS\> (Get-Command notepad.exe).Path

Pour plus d'informations, lancez man Get-Command -full.


2

En plus de user10404, la commande help fonctionnera sur les alias. Vous pourrez donc utiliser le même nom de commande (gcm) pour obtenir une aide et une utilisation interactive:

help gcm -Parameter *
# or
man gcm -Par *

2

Si vous voulez le rendre bref, créez un fichier one.cmd avec le contenu.

echo %~$PATH:1

Ceci recherchera le premier paramètre (% 1) introduit dans le script et affichera le chemin complet du fichier trouvé. Le bon endroit pour placer ce script dans Windows 10 est% LOCALAPPDATA% \ Microsoft \ WindowsApps \ which.cmd

Et vous obtenez votre commande dans le chemin.

c:\>which cmd.exe

c:\>echo C:\Windows\System32\cmd.exe
C:\Windows\System32\cmd.exe

1

where.exeexplicitement plutôt que ne wherefonctionne pour moi dans PowerShell:

PS C:\Users\birdc> where ping
PS C:\Users\birdc> where.exe ping
C:\Windows\System32\PING.EXE

Fonctionne sur Windows 10 1903.
Ultrasonic54321

Dans PowerShell? Je suis sous Windows 10 Pro 1903 et where pingne me donne rien dans PowerShell.
drkvogel le

Désolé je n'étais pas clair. Je voulais dire where.exe.
Ultrasonic54321
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.