给定命令的命令行样式路径,例如bin/server.exe
or ping
,我如何获得该可执行文件的完整路径(作为 cmd 或Process.Start
将解析它)?
我试过Path.GetFullPath
了,但它总是相对于工作目录扩展。它可以正确扩展bin/server.exe
,但是如果ping
它返回c:\users\matt\ping
(不存在)。我想要c:\Windows\system32\ping.exe
。
编辑:我想要与 cmd 相同的行为。一些考虑:
- 当路径中有同名的本地可执行文件时, cmd 首选本地可执行文件
- cmd 可以将命令扩展
server
为server.bat
或server.exe
(添加文件扩展名)
我还尝试了 Windows 的命令行工具where
. 它几乎是我想要的:
显示与搜索模式匹配的文件的位置。默认情况下,搜索是沿着当前目录和 PATH 环境变量指定的路径进行的。
>where ping
C:\Windows\System32\PING.EXE
>where bin\server
INFO: Could not find files for the given pattern(s).
(这个问题很难搜索,因为“路径”这个词有两种不同的含义)