由于我有时会遇到路径问题,我自己的一个cmd脚本被另一个程序隐藏(隐藏)(路径前面),所以我希望能够在Windows命令行上找到程序的完整路径,只要给出它的名称。
是否有与UNIX命令“which”等效的命令?
在UNIX上,哪个命令打印给定命令的完整路径,以便轻松查找和修复这些阴影问题。
由于我有时会遇到路径问题,我自己的一个cmd脚本被另一个程序隐藏(隐藏)(路径前面),所以我希望能够在Windows命令行上找到程序的完整路径,只要给出它的名称。
是否有与UNIX命令“which”等效的命令?
在UNIX上,哪个命令打印给定命令的完整路径,以便轻松查找和修复这些阴影问题。
当前回答
我已经使用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。它速度更快,也能按预期工作。
其他回答
对于Windows XP用户(他们没有内置where命令),我编写了一个“where like”命令作为一个名为whicher的rubygem。
要安装它,请安装Ruby。
Then
gem install whichr
运行方式如下:
C: >其中的命令
JPSoft的TCC和TCC/LE是CMD.EXE的替代品,增加了重要的功能。与OP的问题相关,这是TCC系列命令处理器的内置命令。
此批处理文件使用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%)
参见集合/?寻求帮助。
Cygwin是一个解决方案。如果您不介意使用第三方解决方案,那么Cygwin就是您的选择。
Cygwin在Windows环境中为您提供了*nix的舒适性(您可以在Windows命令shell中使用它,也可以选择使用*nix shell)。它为您提供了一整套适用于Windows的*nix命令(如),您可以将该目录包含在PATH中。
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*