Що таке еквівалент Windows команді «який» в Unix? Чи існує еквівалентна команда PowerShell?


80

В Linux у нас є команда "котрий", щоб з'ясувати шлях виконуваного файлу.
Який його еквівалент Windows? Чи є якась команда PowerShell для цього?


Дивіться також stackoverflow.com/questions/304319 / ...
ysap

Відповіді:


79

Деякі версії Windows (я думаю, що Windows 2003 і новіші) мають команду де:

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-Objectcmdlet, що зовсім інша історія
maoizm

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, команда довідки працюватиме на псевдонімах, тому ви можете використовувати те саме ім’я команди (gcm) для довідки та інтерактивного використання:

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

2

Якщо ви хочете зробити його коротким, створіть один рядок, який.cmd файл із вмістом

echo %~$PATH:1

Це дозволить здійснити пошук першого параметра (% 1), поданого до сценарію, та відобразить повний шлях знайденого файлу. Добре місце для розміщення цього сценарію у Windows 10 -% LOCALAPPDATA% \ Microsoft \ WindowsApps \ what.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.