В Linux у нас є команда "котрий", щоб з'ясувати шлях виконуваного файлу.
Який його еквівалент Windows? Чи є якась команда PowerShell для цього?
В Linux у нас є команда "котрий", щоб з'ясувати шлях виконуваного файлу.
Який його еквівалент Windows? Чи є якась команда PowerShell для цього?
Відповіді:
Деякі версії Windows (я думаю, що Windows 2003 і новіші) мають команду де:
c:\>where ping
C:\Windows\System32\PING.EXE
where
робота для мене в Windows 7
where /r c:\ fileName
додавання / RC: \ дозволило мені виконати рекурсивний пошук , починаючи з кореня диска За допомогою Windows 7 Professional, здається, не бути в access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux / ...
where.exe ping
тому що where
за замовчуванням псевдонім Where-Object
cmdlet, що зовсім інша історія
where.exe
явно, а не where
працює для мене в PowerShell
Так, 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
.
Якщо ви хочете зробити його коротким, створіть один рядок, який.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
where.exe
явно, а не where
працює для мене в PowerShell:
PS C:\Users\birdc> where ping
PS C:\Users\birdc> where.exe ping
C:\Windows\System32\PING.EXE
where ping
мені нічого не дає в PowerShell.
where.exe
.