2010-03-13 78 views
9

Tôi nhận được thông báo lỗi khi chạy mã sau đây từ chương trình bảng điều khiển C#.Hệ thống không thể tìm thấy tệp được chỉ định khi chạy CMD.exe từ C#

"Hệ thống không thể tìm thấy tập tin quy định"

Đây là mã:

System.Diagnostics.Process.Start ("C: \ Windows \ System32 \ cmd .exe /c ");

Thật lạ khi tôi bỏ qua lệnh chuyển đổi/c có thể chạy!?!

Bất kỳ ý tưởng nào tôi đang làm sai?

+0

Tôi có cùng một vấn đề nhưng từ dòng lệnh: U: \> cmd.exe Microsoft Windows [Version 6.1 .7601] Bản quyền (c) 2009 Tập đoàn Microsoft. Đã đăng ký Bản quyền. Hệ thống không thể tìm thấy đường dẫn được chỉ định. – Edmondo1984

Trả lời

11

Process.Start lấy tên tệp làm đối số.Vượt qua đối số là tham số thứ hai:

System.Diagnostics.Process.Start(@"C:\Windows\System32\cmd.exe", "/c"); 
0

bạn cần thêm @ trước đường dẫn. như thế này: @ "C: \ Windows \ System32 \ cmd.exe/c"

3

Có quá tải bắt đầu tranh luận. Sử dụng cái đó để thay thế.

System.Diagnostics.Process.Start(@"C:\Windows\System32\cmd.exe", "/c"); 
+0

Bạn đang thiếu '/' đối số dòng lệnh. – Oded

+0

Đã cập nhật, cảm ơn! –

0

Tôi tin rằng vấn đề là bạn đang cố gắng chuyển một Đối số (/ c) như một phần của đường dẫn.

Đối số và tên tệp là hai mục riêng biệt trong lớp Process.

Hãy thử

System.Diagnostics.Process.Start("C:\Windows\System32\cmd.exe", "/c"); 

http://msdn.microsoft.com/en-us/library/h6ak8zt5.aspx

7

Vâng, đối với một điều, bạn đang hard-coding một con đường, mà đã được mệnh để phá vỡ trên hệ thống của ai đó (không phải mọi cài đặt Windows là trong C:\Windows) .

Nhưng vấn đề ở đây là những dấu gạch chéo ngược đang được sử dụng như một ký tự thoát. Có hai cách để viết một chuỗi đường dẫn như thế này - hoặc thoát khỏi những dấu xồ nguợc:

Process.Start("C:\\Windows\\System32\\cmd.exe", "/c"); 

Hoặc sử dụng @ để vô hiệu hóa xuyệc ngược thoát:

Process.Start(@"C:\Windows\System32\cmd.exe", "/c"); 

Bạn cũng cần phải vượt qua /c như một cuộc tranh cãi, không phải là một phần của đường dẫn - sử dụng quá tải thứ hai của Process.Start như được hiển thị ở trên.

3

tôi có thể thấy ba vấn đề với mã bạn được đăng:

1) You are not thoát chuỗi đường dẫn của bạn một cách chính xác
2) Bạn cần phải vượt qua/c lập luận riêng rẽ với đường dẫn mà bạn muốn thực hiện
3) bạn đang giả định mỗi máy mã này chạy trên có ac: \ cài đặt cửa sổ

tôi muốn đề nghị bằng văn bản như sau:

string cmdPath = System.IO.Path.Combine(Environment.SystemDirectory,"cmd.exe"); 
System.Diagnostics.Process.Start(cmdPath, "/c"); 
-1

Cách dễ nhất là thêm các chương trình với các giải pháp với Thanh HIỆN ITEM và gõ

System::Diagnostics::Process::Start("ccsetup305.exe"); 
+0

Dường như không trả lời được câu hỏi. OP phải làm với các đối số dòng lệnh mà bạn không thể hiện được. – cHao

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