¿Cuál es el equivalente de Windows del comando "which" en Unix? ¿Hay un comando equivalente de PowerShell?

Respuestas:

79

Algunas versiones de Windows (creo que Windows 2003 y posteriores) tienen el comando where:

c:\>where ping
C:\Windows\System32\PING.EXE
Randy Levy
fuente
55
wheretrabaja para mí en Windows 7
Nam G VU
66
Esto solo funciona en cmd, no en PowerShell (en mi experiencia)
Thomas
where /r c:\ fileNameagregar / rc: \ me permitió realizar una búsqueda recursiva comenzando en la raíz de la unidad C usando Windows 7 Professional, parece que no está en access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…
CrandellWS
66
en Powershell que debe decir where.exe ping, porque wherees un alias por defecto para Where-Objectcmdlet que es completamente diferente historia
maoizm
where.exeexplícitamente en lugar de wheretrabajar para mí en PowerShell
drkvogel
36

Sí, Get-Commandencontrará todos los comandos, incluidos los ejecutables:

PS\> Get-Command ipconfig

Si desea limitar los comandos a solo ejecutables:

PS\> Get-Command -CommandType Application

Encontrará a todos los exes en su camino. Hay un alias para uso interactivo:

PS\> gcm net* -CommandType Application

Para obtener la ruta de un ejecutable, puede usar la Pathpropiedad del objeto devuelto. Por ejemplo:

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

Para más información, corre man Get-Command -full.

usuario10404
fuente
2

Además del usuario10404, el comando de ayuda funcionará con alias, por lo que puede usar el mismo nombre de comando (gcm) para ayuda y uso interactivo:

help gcm -Parameter *
# or
man gcm -Par *
yzorg
fuente
2

Si desea acortarlo, cree un archivo de una línea que .cmd con el contenido

echo %~$PATH:1

Esto buscará el primer parámetro (% 1) alimentado al script y mostrará la ruta completa del archivo encontrado. Un buen lugar para poner este script en Windows 10 es% LOCALAPPDATA% \ Microsoft \ WindowsApps \ which.cmd

Y obtienes tu comando en el camino.

c:\>which cmd.exe

c:\>echo C:\Windows\System32\cmd.exe
C:\Windows\System32\cmd.exe
Manu
fuente
1

where.exeexplícitamente en lugar de wheretrabajar para mí en PowerShell:

PS C:\Users\birdc> where ping
PS C:\Users\birdc> where.exe ping
C:\Windows\System32\PING.EXE
drkvogel
fuente
Funciona en Windows 10 1903.
Ultrasonic54321
En PowerShell? Estoy en Windows 10 Pro 1903 y where pingno me da nada en PowerShell.
drkvogel
Lo siento, no estaba claro. Me refería where.exe.
Ultrasonic54321