Nếu tôi chạy một quy trình với ShellExecute
(hoặc trong .net với System.Diagnostics.Process.Start()
), quá trình tên tệp để bắt đầu không cần phải là đường dẫn đầy đủ.Kiểm tra xem tệp thực thi có tồn tại trong đường dẫn Windows
Nếu tôi muốn bắt đầu notepad, tôi có thể sử dụng
Process.Start("notepad.exe");
thay vì
Process.Start(@"c:\windows\system32\notepad.exe");
vì direcotry c:\windows\system32
là một phần của các biến môi trường PATH.
làm cách nào để kiểm tra xem tệp có tồn tại trên PATH mà không thực thi quy trình và không phân tích cú pháp biến PATH không?
System.IO.File.Exists("notepad.exe"); // returns false
(new System.IO.FileInfo("notepad.exe")).Exists; // returns false
nhưng tôi cần một cái gì đó như thế này:
System.IO.File.ExistsOnPath("notepad.exe"); // should return true
và
System.IO.File.GetFullPath("notepad.exe"); // (like unix which cmd) should return
// c:\windows\system32\notepad.exe
Có một lớp học được xác định trước để làm nhiệm vụ này có sẵn trong BCL?
Trong khi một lớp được xác định trước như vậy sẽ thuận tiện (hoặc là thuận tiện, nếu nó tồn tại) là không chỉ còn một dòng nữa để có được đường dẫn sau đó kiểm tra tồn tại()? Bạn có thể viết nó nhanh hơn so với đặt câu hỏi. Lý do/nhu cầu đặc biệt? Chỉ cần tự hỏi. – mickeyf
Yepp, nên rất dễ dàng. Nhưng niềm tin của tôi là, nếu một công việc có thể được thực hiện với thư viện hiện tại của một ngôn ngữ thử nghiệm, tôi ủng hộ cách này qua việc tái phát minh các liên tục một lần nữa. Nếu không có smth có sẵn, tôi làm điều đó của riêng tôi. –