Я думаю, что Linq поможет вам (используя System.Linq)
var paths = (Environment.GetEnvironmentVariable("Path")).Split(';');
var fileName = "robocopy.exe";
var foundit = Path.Combine(paths.SingleOrDefault(f=>File.Exists(Path.Combine(f,fileName))),fileName);
Кроме того, вы можете обернуть этот код в свой собственный метод FileExistsInAnyPath (string fileName)
, но здесь вынеобходимо обрабатывать ожидаемые исключения
- SingleOrDefault, когда существует несколько путей.(если вам нужен только первый, вы можете заменить его FirstOrDefault).
- Path.Combine, когда выражение LINQ возвращает ноль.(вы можете проверить сначала с помощью if (paths.Any (f => File.Exists (Path.Combine (f, fileName))) перед назначением переменной foundit.