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

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

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


当前回答

试试这个

set a=%~$dir:1
If "%for%"=="" (Echo %1 not found) else (echo %1 found at %a%)

其他回答

Windows Server 2003及更高版本(即Windows XP 32位之后的任何版本)提供了where.exe程序,该程序可以执行某些操作,尽管它匹配所有类型的文件,而不仅仅是可执行命令。(它与内置的shell命令(如cd)不匹配。)它甚至会接受通配符,因此nt*可以在%PATH%和当前目录中查找名称以nt开头的所有文件。

尝试在哪里/?寻求帮助。

请注意,Windows PowerShell将where定义为where-Object cmdlet的别名,因此如果需要where.exe,则需要键入全名,而不是省略.exe扩展名。或者,您可以为其设置别名:

Set-Alias which where.exe

更新:建议使用Get命令(别名:gcm),因为它是PS的本机命令,并将获取所有命令类型:别名、cmdlet、可执行文件和函数。例子:

gcm notepad*

我正在使用GOW(Windows上的GNU),这是Cygwin的一个轻量级版本。你可以在这里从GitHub获取它。

GOW(Windows上的GNU)是Cygwin的轻量级替代品。它使用一个方便的Windows安装程序,可安装大约130个编译为本机win32的有用的开源UNIX应用程序二进制文件。它设计得尽可能小,大约10 MB与Cygwin相反,Cygwin可以运行超过100 MB,这取决于选项。-关于描述(Brent R.Matzelle)

GOW中包含的命令列表截图:

我的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:

GnuWin32工具以及一系列其他Unix工具都有。

Windows没有现货,但它是由Services for Unix提供的,有几个简单的批处理脚本可以完成相同的任务,比如这一个。