由于我有时会遇到路径问题,我自己的一个cmd脚本被另一个程序隐藏(隐藏)(路径前面),所以我希望能够在Windows命令行上找到程序的完整路径,只要给出它的名称。
是否有与UNIX命令“which”等效的命令?
在UNIX上,哪个命令打印给定命令的完整路径,以便轻松查找和修复这些阴影问题。
由于我有时会遇到路径问题,我自己的一个cmd脚本被另一个程序隐藏(隐藏)(路径前面),所以我希望能够在Windows命令行上找到程序的完整路径,只要给出它的名称。
是否有与UNIX命令“which”等效的命令?
在UNIX上,哪个命令打印给定命令的完整路径,以便轻松查找和修复这些阴影问题。
当前回答
在Windows PowerShell中:
set-alias which where.exe
其他回答
如果您安装了PowerShell(我建议使用),可以使用以下命令作为大致等效命令(用programName替换可执行文件的名称):
($Env:Path).Split(";") | Get-ChildItem -filter programName*
更多信息:我的曼维奇!PowerShell哪个
GnuWin32工具以及一系列其他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。它速度更快,也能按预期工作。
我在互联网上找到的Unix Win32端口没有一个是令人满意的,因为它们都有一个或多个缺点:
不支持Windows PATHEXT变量。(它定义了在扫描路径之前隐式添加到每个命令的扩展列表,以及顺序。)(我使用了很多tcl脚本,没有公开可用的工具可以找到它们。)不支持cmd.exe代码页,这会使它们错误地显示带有非ascii字符的路径。(我对此非常敏感,我的名字中有一个ç:-)cmd.exe和PowerShell命令行中不支持不同的搜索规则。(没有公开可用的工具可以在PowerShell窗口中找到.ps1脚本,但在cmd窗口中找不到!)
所以我最终写了我自己的,这正确地支持了以上所有内容。
此处可用:http://jf.larvoire.free.fr/progs/which.exe
JPSoft的TCC和TCC/LE是CMD.EXE的替代品,增加了重要的功能。与OP的问题相关,这是TCC系列命令处理器的内置命令。