2012-09-06 45 views
6

Tôi đã xem câu hỏi này về Passing command line arguments in C#.Truyền mảng đối số trong dòng lệnh

Nhưng trong trường hợp của tôi, tôi phải chuyển mảng tham số đến tệp .exe đang gọi.

ví dụ:

var arr = new string[] {"Item title","New task","22","High Priority"} 

Có thể sử dụng Process.Start() với con đường exe cùng với mảng

tôi có đường dẫn .exe

const string path = @"C:\Projects\Test\test.exe"; 

Cảm ơn

+1

Bản sao có thể có của [Đối số dòng lệnh thoát trong C#] (http://stackoverflow.com/questions/5510343/escape-command-line-arguments-in-c-sharp) – quetzalcoatl

+1

Hầu hết các câu trả lời trong câu hỏi này đều sai, xấu, không đầy đủ hoặc ít nhiều không an toàn khi đối số chứa các ký tự đặc biệt như dấu ngoặc kép hoặc khoảng trắng. Xin vui lòng xem [câu trả lời này] (http://stackoverflow.com/a/6040946) – quetzalcoatl

Trả lời

2

Vui lòng thử này:

 var arr = new string[] {"Item title", "New task", "22", "High Priority"}; 
     const string path = @"C:\Projects\Test\test.exe"; 
     const string argsSeparator = " "; 
     string args = string.Join(argsSeparator, arr); 

     Process.Start(path, args); 
+10

Và làm cách nào anh ta biết nếu không gian là một phần của đối số hoặc dấu phân cách? : D –

+2

@GrzegorzWilczura sau đó có thể 'string args = string.Join (" ", arr.Select (e =>" \ "" + e + "\" "));'? – wasyl

+2

@GrzegorzWilczura Nếu dấu tách không phải là khoảng trắng, anh ta có thể sử dụng bất kỳ dấu tách nào khác :) chỉ cần thay đổi một const. Cảm ơn vì đã bình luận. –

0

của nó không thể vượt qua mảng như là đối số, bạn có thể vượt qua một chuỗi với Comma Separator:

ProcessStartInfo info = new ProcessStartInfo(); 
info.Arguments = "Item title,New task,22,High Priority" 
0

Một lựa chọn là để đưa mảng trong một chuỗi vì vậy nó được xem như một đối số của phương pháp này. Trong phương thức của bạn, bạn có thể phân tích cú pháp một đối số đó. Một cái gì đó như:

"Item title, New task, 22, High Priority" 

Bạn có thể sử dụng mảng hiện tại của bạn bằng cách thực hiện:

var arrAsOneString = string.Join(", ", arr); 

Bên trong phương pháp của bạn, làm:

var values = argument.Split(',').Select(x => x.Trim()); 

tôi đã thêm các trim để làm đi với các không gian.

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