2012-09-06 14 views
6

Tenía esta pregunta acerca de Passing command line arguments in C#.Pasando matriz de argumentos en la línea de comando

Pero en mi caso, tengo que pasar un conjunto de parámetros al archivo .exe que realiza la llamada.

p. Ej.

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

¿Es posible utilizar Process.Start() con la ruta exe, junto con la matriz

Tengo el camino .exe

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

Gracias

+1

Posible duplicado de [Escape argumentos de línea de comando en C#] (http://stackoverflow.com/questions/5510343/escape-command-line-arguments-in-c-sharp) – quetzalcoatl

+1

La mayoría de las respuestas en esta pregunta son incorrectas, malo, incompleto o simplemente más o menos inseguro cuando los argumentos contienen caracteres especiales como comillas o espacios en blanco. Por favor, consulte [esta respuesta] (http://stackoverflow.com/a/6040946) – quetzalcoatl

Respuesta

2

Por favor, intente esto:

 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

¿Y cómo sabrá si el espacio es parte del argumento o separador? : D –

+2

@GrzegorzWilczura entonces tal vez 'string args = string.Join (" ", arr.Select (e =>" \ "" + e + "\" "))' – wasyl

+2

@GrzegorzWilczura Si el separador no tiene espacio, puede usar cualquier otro separador :) simplemente cambie una const. Gracias por comentar. –

0

No es posible pasar matriz como argumento, se puede pasar una cadena con separador de coma:

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

Una opción es poner la matriz en una cadena por lo que es visto como un argumento por el método. En su método, puede analizar ese único argumento. Algo así como:

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

Puede utilizar su matriz existente haciendo:

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

Dentro de su método, hacer:

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

que añade el ajuste de acabar con espacios.

Cuestiones relacionadas