由于我有时会遇到路径问题,我自己的一个cmd脚本被另一个程序隐藏(隐藏)(路径前面),所以我希望能够在Windows命令行上找到程序的完整路径,只要给出它的名称。

是否有与UNIX命令“which”等效的命令?

在UNIX上,哪个命令打印给定命令的完整路径,以便轻松查找和修复这些阴影问题。


当前回答

我的PowerShell配置文件中有一个名为“which”的函数

function which {
    get-command $args[0]| format-list
}

输出如下:

PS C:\Users\fez> which python


Name            : python.exe
CommandType     : Application
Definition      : C:\Python27\python.exe
Extension       : .exe
Path            : C:\Python27\python.exe
FileVersionInfo : File:             C:\Python27\python.exe
                  InternalName:
                  OriginalFilename:
                  FileVersion:
                  FileDescription:
                  Product:
                  ProductVersion:
                  Debug:            False
                  Patched:          False
                  PreRelease:       False
                  PrivateBuild:     False
                  SpecialBuild:     False
                  Language:

其他回答

我创建了类似于Ned Batchelder的工具:

在PATH中搜索.dll和.exe文件

虽然我的工具主要用于搜索各种dll版本,但它显示了更多信息(日期、大小、版本),但它不使用PATHEXT(我希望很快更新我的工具)。

在Windows PowerShell中:

set-alias which where.exe

对于Windows XP用户(他们没有内置where命令),我编写了一个“where like”命令作为一个名为whicher的rubygem。

要安装它,请安装Ruby。

Then

gem install whichr

运行方式如下:

C: >其中的命令

在PowerShell中,它是gcm,它提供有关其他命令的格式化信息。如果只想检索可执行文件的路径,请使用.Source。

例如:gcm-git或(gcm-git).Source

提示:

适用于Windows XP。自PowerShell 1.0之后可用。gcm是Get-Command cmdlet的别名。在没有任何参数的情况下,它列出了主机shell提供的所有可用命令。您可以使用Set alias which gcm创建自定义别名,并使用它,例如:(which git).Source。官方文件:https://technet.microsoft.com/en-us/library/ee176842.aspx

我已经使用npm中的which模块很长时间了,它工作得很好:https://www.npmjs.com/package/which这是一个很好的多平台替代方案。

现在我切换到Git附带的。只需将Git中的/usr/bin路径添加到路径中,该路径通常位于C:\Program Files\Git\usr\bin\which.exe。哪个二进制文件位于C:\Program Files \Git\usr/bin\which.exe。它速度更快,也能按预期工作。