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.