由于我有时会遇到路径问题,我自己的一个cmd脚本被另一个程序隐藏(隐藏)(路径前面),所以我希望能够在Windows命令行上找到程序的完整路径,只要给出它的名称。
是否有与UNIX命令“which”等效的命令?
在UNIX上,哪个命令打印给定命令的完整路径,以便轻松查找和修复这些阴影问题。
由于我有时会遇到路径问题,我自己的一个cmd脚本被另一个程序隐藏(隐藏)(路径前面),所以我希望能够在Windows命令行上找到程序的完整路径,只要给出它的名称。
是否有与UNIX命令“which”等效的命令?
在UNIX上,哪个命令打印给定命令的完整路径,以便轻松查找和修复这些阴影问题。
当前回答
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中包含的命令列表截图:
Windows没有现货,但它是由Services for Unix提供的,有几个简单的批处理脚本可以完成相同的任务,比如这一个。
此批处理文件使用CMD变量处理来查找将在路径中执行的命令。注意:当前目录总是在路径之前完成),并且根据使用的API调用,在路径之前/之后搜索其他位置。
@echo off
echo.
echo PathFind - Finds the first file in in a path
echo ======== = ===== === ===== ==== == == = ====
echo.
echo Searching for %1 in %path%
echo.
set a=%~$PATH:1
If "%a%"=="" (Echo %1 not found) else (echo %1 found at %a%)
参见集合/?寻求帮助。
在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
在调用以下内容的Windows CMD中:
$ where php
C:\Program Files\PHP\php.exe