2009-08-10 68 views
27

Trong C# WPF: Tôi muốn thực thi lệnh CMD, làm thế nào chính xác tôi có thể thực hiện lệnh cmd bằng lệnh?Thực hiện lệnh CMD từ mã

+0

Tôi không biết nhiều về c, C++ hoặc C#, nhưng tôi khuyên bạn nên lập trình để viết mã vào một tệp lô, chạy tệp lô và sau đó xóa tệp lô. –

Trả lời

1

Bạn có yêu cầu cách hiển thị cửa sổ lệnh không? Nếu vậy, bạn có thể sử dụng Process object ...

Process.Start("cmd"); 
10

Sử dụng Process.Start:

using System.Diagnostics; 

class Program 
{ 
    static void Main() 
    { 
     Process.Start("example.txt"); 
    } 
} 
2

Argh: D không phải là nhanh nhất

Process.Start("notepad C:\test.txt"); 
35

Dưới đây là một ví dụ đơn giản:

Process.Start("cmd","/C copy c:\\file.txt lpt1"); 
+3

Tôi đang cố gắng, nhưng tham số thứ hai, đối số không thực sự được chuyển đến cửa sổ lệnh, ít nhất không có trong Windows 8.1 – William

+0

@William Tôi đã thử nghiệm điều này trong cửa sổ 10 và hoạt động chính xác. –

+0

@MahdiRafatjah Tôi đã thử nghiệm điều này trong các cửa sổ 7 và nó cũng không hoạt động ... idk ... –

5

H ow về bạn tạo một tập tin thực thi với lệnh mà bạn muốn, và gọi nó với Process.Start

nội dung dir.bat:

dir 

sau đó gọi:

Process.Start("dir.bat"); 

sẽ gọi con dơi và thực hiện thư mục

+0

Ý tưởng tuyệt vời! Tôi đã làm Process.Start ("test.bat") nhưng một lỗi bật lên nói "Một ngoại lệ unhandled loại 'System.ComponentModel.Win32Exception' xảy ra trong System.dll". Bất kỳ ý tưởng? – Jake

+1

Oh nvm, đã sửa nó. Cảm ơn rất nhiều Carlo. Ý tưởng thực sự tốt, đã giúp rất nhiều. – Jake

+0

Không sao, tôi rất vui được giúp đỡ! Đừng quên đánh dấu đây là câu trả lời đúng. – Carlo

20

Như đã đề cập trong các câu trả lời khác mà bạn có thể sử dụng:

Process.Start("notepad somefile.txt"); 

Tuy nhiên, có một cách khác.

Bạn có thể ví dụ một đối tượng Process và gọi phương thức Start dụ:

Process process = new Process(); 
    process.StartInfo.FileName = "notepad.exe"; 
    process.StartInfo.WorkingDirectory = "c:\temp"; 
    process.StartInfo.Arguments = "somefile.txt"; 
    process.Start(); 

Làm theo cách này cho phép bạn cấu hình tùy chọn hơn trước khi bắt đầu quá trình. Đối tượng Process cũng cho phép bạn lấy thông tin về quá trình trong khi nó đang thực hiện và nó sẽ cung cấp cho bạn một thông báo (thông qua sự kiện Exited) khi quá trình kết thúc.

Ngoài ra: Đừng quên đặt 'process.EnableRaisingEvents' thành 'true' nếu bạn muốn móc sự kiện 'Đã thoát'.

9

nếu bạn muốn bắt đầu ứng dụng với cmd sử dụng mã này:

string YourApplicationPath = "C:\\Program Files\\App\\MyApp.exe" 
ProcessStartInfo processInfo = new ProcessStartInfo(); 
processInfo.WindowStyle = ProcessWindowStyle.Hidden; 
processInfo.FileName = "cmd.exe"; 
processInfo.WorkingDirectory = Path.GetDirectoryName(YourApplicationPath); 
processInfo.Arguments = "/c START " + Path.GetFileName(YourApplicationPath); 
Process.Start(processInfo); 
3

Bạn có thể sử dụng để làm việc này cmd trong C#:

ProcessStartInfo proStart = new ProcessStartInfo(); 
Process pro = new Process(); 
proStart.FileName = "cmd.exe"; 
proStart.WorkingDirectory = @"D:\..."; 
string arg = "/c your_argument"; 
proStart.Arguments = arg; 
proStart.WindowStyle = ProcessWindowStyle.Hidden; 
pro.StartInfo = pro; 
pro.Start(); 

Đừng quên viết /c trước đối số !!

+0

"pro.StartInfo = pro;" nên là "pro.StartInfo = proStart;" Vâng? – amalgamate

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