2011-07-03 7 views
7

Estoy tratando de pasar un argumento a un proceso una carpeta con espacio en su nombre. No reconoce la carpeta. ¿Cómo puedo hacer eso?C# - pasando argumentos entre ellos a un proceso

string my_arg = @"C:\\program files\\my folder with spaces"; 

ProcessStartInfo proc = new ProcessStartInfo(); 

proc.FileName = @"C:\batches\my_batch.bat"; 

proc.Arguments = @my_arg ; 

Process.Start(proc); 

el proceso no se iniciará - funciona si utilizo una carpeta sin espacios en el nombre. ¡Gracias!

+0

Intente codificar my_arg con comillas adicionales, como my_arg = "\" "+ my_arg +" \ "" ;. Funcionaría eso? – Gleno

Respuesta

1

Trata de hacer lo siguiente como foldernames con espacios deben ser citados en cmd:

string my_arg = @"""C:\\program files\\my folder with spaces"""; 
+1

todavía no funciona? – pall

6

estás usando cadenas literales; no hay necesidad de escapar de las barras diagonales inversas, y de hecho si lo haces, entonces no hay necesidad de usar una cadena literal en primer lugar.

Los espacios, por otra parte, requieren un cuidado especial: coloque el argumento en comillas para resolver esto.

string my_arg = @"""C:\program files\my folder with spaces"""; 
+1

Olvidó la comilla final. – Guffa

2

intente esto:

string my_arg = "\"C:\\program files\\my folder with spaces\""; 
0

favor Pruebe esta cadena

my_arg = @ "\" C: \ Archivos de programa \ mi carpeta con espacios \ | ";

ProcessStartInfo proc = new ProcessStartInfo();

proc.FileName = @ "C: \ batches \ my_batch.bat";

proc.Arguments = @my_arg;

Process.Start (proc);

Cuestiones relacionadas