2013-05-29 36 views
9

Tôi hy vọng đây là một câu hỏi dễ, nhưng tôi có đoạn mã sau trong ứng dụng C# của tôi và vì lý do nào đó nó sẽ không thực thi tập tin batch mà tôi đang trỏ đến.Gọi tập tin Batch từ C#

private void filesystemwatcher_Renamed(object sender, System.IO.RenamedEventArgs e) 
{ 
    if (File.Exists("C:\\Watcher\\File.txt")) 
    { 
     System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
     proc.EnableRaisingEvents = false; 
     proc.StartInfo.FileName = "C:\\Watcher\\Cleanup.bat"; 
     proc.Start(); 
     MessageBox.Show("Cleaned up files, your welcome."); 

    } 
    else 
    { 
     label4.Text = "Error: No file found"; 
    } 
} 

Nó sẽ hiển thị hộp thư chính xác vì vậy tôi biết rằng nó đang đến vùng mã đó, nhưng tôi không thấy hộp cmd bật lên hoặc bất cứ thứ gì cho thấy rằng nó chỉ chạy tệp lô. Tôi cũng có thể nói vì cleanup.bat chỉ đổi tên một tập tin và đó là nó. Sau khi tôi nhận được hộp thông báo, tên tệp không thay đổi.

Nếu tôi bấm đúp vào tệp bó theo cách thủ công, nó hoạt động tốt. Tôi cũng đã điều chỉnh quyền của tệp batch thành Kiểm soát hoàn toàn cho tất cả mọi người (chỉ dành cho mục đích thử nghiệm)

+2

là gì ** Bạn ** chào đón. –

Trả lời

21

này nên làm việc

System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
proc.StartInfo.FileName = "C:\\Watcher\\Cleanup.bat"; 
proc.StartInfo.WorkingDirectory = "C:\\Watcher"; 
proc.Start(); 

Bạn cần phải đặt WorkingDirectory nếu không thì lệnh sẽ được thực thi trong thư mục hiện của ứng dụng gọi điện thoại

+0

Cảm ơn tác phẩm tuyệt vời !! – Bit10Bytes

4

Thử đặt proc.StartInfo.UseShellExecute thành true; điều này cho hệ điều hành thực hiện tra cứu phần mở rộng của tệp để tìm trình xử lý chính xác trong sổ đăng ký.

Các vấn đề liên quan