Что Windows эквивалентно команде «what» в Unix? Есть ли эквивалентная команда PowerShell?


80

В Linux у нас есть команда which для поиска пути к исполняемому файлу.
Каков его эквивалент Windows? Есть ли какая-либо команда PowerShell для этого?


Смотрите также stackoverflow.com/questions/304319/...
ysap

Ответы:


79

Некоторые версии Windows (я думаю, что Windows 2003 и выше) имеют команду where:

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

5
whereработать для меня в Windows 7
Nam G VU

6
Это работает только в cmd, а не в PowerShell (по моему опыту)
Thomas

where /r c:\ fileNameдобавление / RC: \ позволило мне выполнить рекурсивный поиск , начиная с корня диска С помощью Windows 7 Professional, кажется, не быть в access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/...
CrandellWS

6
в Powershell вы должны сказать, where.exe pingпотому что whereпо умолчанию псевдоним Where-Objectкомандлета, что совершенно другая история
маоизм

where.exeявно, а не whereработает для меня в PowerShell
drkvogel

36

Да, Get-Commandнайдет все команды, включая исполняемые:

PS\> Get-Command ipconfig

Если вы хотите ограничить команды только исполняемыми файлами:

PS\> Get-Command -CommandType Application

Найдет всех бывших на вашем пути. Существует псевдоним для интерактивного использования:

PS\> gcm net* -CommandType Application

Чтобы получить путь к исполняемому файлу, вы можете использовать Pathсвойство возвращаемого объекта. Например:

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

Для получения дополнительной информации, запустите man Get-Command -full.


2

В дополнение к user10404 команда help будет работать с псевдонимами, поэтому вы можете использовать то же имя команды (gcm) для справки и интерактивного использования:

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

2

Если вы хотите сделать его коротким, создайте файл с одной строкой which.cmd с содержимым

echo %~$PATH:1

Будет выполнен поиск первого параметра (% 1), переданного в сценарий, и будет показан полный путь к найденному файлу. Хорошее место для размещения этого скрипта в Windows 10 - это% LOCALAPPDATA% \ Microsoft \ WindowsApps \ which.cmd

И вы получите свою команду в пути.

c:\>which cmd.exe

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

1

where.exeявно, а не whereработает для меня в PowerShell:

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

Работает на Windows 10 1903.
Ultrasonic54321

В PowerShell? Я на Windows 10 Pro 1903, и where pingничего не дает мне в PowerShell.
drkvogel

Извините, мне было неясно. Я имел в виду where.exe.
Ultrasonic54321
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.