csh*_*net 4 .net c# path relative-path environment-variables
我有一个可执行文件名,例如“ cmd.exe”,需要解析它的标准路径。我知道exe出现在PATH环境变量中列出的目录之一中。有没有一种方法可以解析完整路径而无需解析和测试PATH变量中的每个目录?基本上我不想这样做:
foreach (string entry in Environment.GetEnvironmentVariable("PATH").Split(';'))
...
Run Code Online (Sandbox Code Playgroud)
必须有更好的方法,对吗?
这是另一种方法:
string exe = "cmd.exe";
string result = Environment.GetEnvironmentVariable("PATH")
.Split(';')
.Where(s => File.Exists(Path.Combine(s, exe)))
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
结果:C:\ WINDOWS \ system32
Path.Combine()调用用于处理不以斜杠结尾的路径。这将正确连接File.Exists()方法要使用的字符串。
你可以用 Linq 来实现
string path = Environment
.GetEnvironmentVariable("PATH")
.Split(';')
.FirstOrDefault(p => File.Exists(p + filename));
Run Code Online (Sandbox Code Playgroud)
也许更具可读性?
担