Những gì tôi cần làm là có một ứng dụng C# 2005 GUI gọi một tệp .bat và một số tệp VBScript theo yêu cầu của người dùng. Đây chỉ là một giải pháp khoảng trống cho đến cuối ngày nghỉ và tôi có thể viết tất cả trong C#. Tôi có thể nhận được các tập tin VBScript để thực thi không có vấn đề nhưng tôi không thể thực thi các tập tin .bat. Khi tôi "bấm" trong ứng dụng C# để thực thi .bat một cửa sổ DOS mở ra và đóng rất nhanh và thử nghiệm .bat tập tin không thực hiện - "Windows không nhận ra bat như một lệnh nội bộ hoặc bên ngoài" là lỗi trả về trong hộp DOS. Nếu tôi chỉ đơn giản là doubl-click vào tập tin .bat hoặc tự chạy nó từ dấu nhắc lệnh nó thực hiện. Tôi cũng cần tệp .bat để thực thi âm thầm trừ khi người dùng tương tác được yêu cầu - tập lệnh này sao chép 11k + tệp vào thư mục trên máy được nối mạng và thỉnh thoảng Windows "quên" nếu đích là tệp hoặc thư mục và yêu cầu người dùng nói nó là gì (đây là một vấn đề hoàn toàn khác không phải để thảo luận ở đây ... không cần phải nói rằng tôi cảm thấy khó chịu bởi nó).Làm cách nào để thực thi tệp .bat từ ứng dụng biểu mẫu C# windows?
Cho đến nay trong mã nguồn C# của tôi, tôi có điều này:
Process scriptProc = new Process();
if (File.Exists("c:\\scripts\\batchfile1.bat"))
{
scriptProc.StartInfo.FileName = @"cscript";
scriptProc.StartInfo.Arguments = ("cmd.exe", "/C C:\\scripts\\batchfile1.bat"); // Wacky psuedo code //
scriptProc.Start();
scriptProc.WaitForExit(1500000);
scriptProc.Close();
}
if (!File.Exists("c:\\scripts\\batchfile1.bat"))
{
}
Tôi biết rằng mã này không hoạt động - nhưng về cơ bản là những gì tôi muốn nó làm. Những gì tôi đang xem là một cái gì đó như thế này cho các tập tin .bat. Tôi giả sử tôi phải nói với hệ thống để sử dụng cmd để chạy .bat. Tôi đang thua lỗ như thế nào để làm điều này. Tôi đã kiểm tra này site đó là dành cho C# 2003. Không giúp đỡ nhiều cho tôi như tôi rất xanh với C#.
EDIT: Sử dụng bài đăng của Kevin tôi đã thử lại lần nữa. Cùng một giải pháp kịch bản từ bài đó nhưng sửa đổi đối với tôi vì tôi không cần phải chuyển hướng:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "C:\\scripts\\batchfile1.bat";
proc.StartInfo.RedirectStandardError = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit();
Điều này có vẻ giống như vậy. Tôi sẽ thử cái này. Thanh bên - Bạn có muốn các ngôn ngữ lập trình từ MS có tên dài hơn không? Googling "C#" ".bat" là vô ích trong cùng cực. – wergeld