2012-09-06 23 views
6

Ich hatte diese Frage über Passing command line arguments in C#.Übergabe Array von Argumenten in der Befehlszeile

Aber in meinem Fall muss ich Array von Parametern an die aufrufende .exe-Datei übergeben.

z.B.

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

Ist es möglich, Process.Start() mit exe Pfad zu verwenden zusammen mit dem Array

Ich habe die EXE-Pfad

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

Dank

+1

Mögliche Duplikate von [Escape-Kommandozeilenargumente in C#] (http://stackoverflow.com/questions/5510343/escape-command-line-arguments-in-c-sharp) – quetzalcoatl

+1

Die meisten Antworten in dieser Frage sind falsch, schlecht, unvollständig oder nur mehr oder weniger unsicher, wenn die Argumente Sonderzeichen wie Anführungszeichen oder Leerzeichen enthalten. Bitte sehen Sie [diese Antwort] (http://Stackoverflow.com/a/6040946) – quetzalcoatl

Antwort

2

Bitte versuchen Sie dieses:

 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

Und wie wird er wissen, ob Raum Teil von Argument oder Trennzeichen ist? : D –

+2

@GrzegorzWilczura dann vielleicht 'string args = string.Join (" ", arr.Select (e =>" + e + "")); '? – wasyl

+2

@GrzegorzWilczura Wenn Trennzeichen nicht Leerzeichen ist, kann er jedes andere Trennzeichen verwenden :) Ändern Sie einfach eine Konstante. Danke für den Kommentar. –

0

Es ist nicht möglich, Array als Argument übergeben, können Sie eine Zeichenfolge mit Kommaseparator passieren können:

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

Eine Option ist das Array in einer Zeichenfolge eingeben, damit es als ein Argument der Methode betrachtet wird. In Ihrer Methode können Sie dann dieses eine Argument analysieren. Etwas wie:

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

Sie Ihre vorhandenen Array verwenden können, indem Sie:

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

In Ihrer Methode tun:

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

ich die Trimmung hinzugefügt mit Leerzeichen zu beseitigen.

Verwandte Themen