PowerShell which - 获取可用路径

PowerShell which - 获取可用路径

编辑:我在 Windows 10 上,我认为该which命令可用是因为安装了适用于 Windows 的 Git。

如果我which nvm在 PowerShell 中输入,则会得到/c/Users/HP/AppData/Roaming/nvm/nvm。 如果然后我想导航到该位置,/cd c/Users/HP/AppData/Roaming/nvm/nvm则会失败,因为找不到路径。

cd请问我怎样才能获得可以使用的路径?

答案1

既然您正在使用 PowerShell,那么为什么不使用 PowerShell?

PowerShell 中whichor的等价命令是。这将返回一个对象。例如:where.exeGet-Command

Get-Command ping

输出:

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     PING.EXE                                           10.0.18... C:\Windows\system32\PING.EXE

当您寻找路径时,您需要以下Path属性:

(Get-Command ping).Path

输出:

C:\Windows\system32\PING.EXE

这至少是一条路径,Windows 会理解。但您无法将工作目录更改为它,因为它不是目录,而是可执行文件。您可以再次使用一些 PowerShell 魔法并提取可执行文件的父路径:

Split-Path (Get-Command ping).Path

输出:

C:\Windows\system32

然后,您可以使用此路径更改工作目录。顺便说一句,cd在 PowerShell 中有一个别名,Set-Location您可以使用 进行验证Get-Command cd。总之,您可以将结果通过管道传输到cd或 ,Set-Location并在一行中获得所需的解决方案(提示未剥离以查看结果):

PS C:\> Split-Path (Get-Command ping).Path | cd
PS C:\Windows\system32>

答案2

我认为该which命令可用是因为安装了适用于 Windows 的 Git。

正如评论中提到的,Windows 版 Git 使用的路径格式与 PowerShell(或广义上的 Windows)不同。which您使用的命令显然返回了要在 Git Bash 中使用的路径。

特别值得注意的是:

  • PowerShell 和 Windows 通常不使用正斜杠 ( /) 作为路径分隔符。相反,反斜杠\是本机使用的。

  • 驱动器号未指定为/drive/。它们被指定为drive:\

考虑到这一点,等效路径为:

/c/Users/HP/AppData/Roaming/nvm/nvm

在 PowerShell 中为:

c:\Users\HP\AppData\Roaming\nvm\nvm.ext

请注意,ext.在这种情况下, 只是表示通用扩展名(可能是.exe)。此外,/cd可能无效,最后一个nvm可能是可执行文件本身(减去扩展名 ie,无论什么ext)。因此,您只需使用 ie:

cd c:\Users\HP\AppData\Roaming\nvm

cd请问我怎样才能获得可以使用的路径?

正如其他地方多次提到的那样,wherecmd(普通命令窗口)和where.exe(在 PowerShell 中)将返回 Windows 的正确格式路径,例如c:\Users\HP\AppData\Roaming\nvm\nvm.ext上面(因此where nvmcmdwhere.exe nvm在 PowerShell 中)。只需删除最终的可执行文件名称即可。

相关内容