Soy nuevo en .net, tengo una tarea en la que necesito abrir el símbolo del sistema desde un directorio en particular y luego ejecutar algunos comandos en él. Todo esto debe hacerse por código. Intenté lo mismo con fines de prueba en el siguiente código.
var res = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer); Process cmd = new Process(); cmd.StartInfo.WorkingDirectory = @"E:\"; cmd.StartInfo.FileName = "cmd.exe"; cmd.StartInfo.RedirectStandardInput = true; cmd.StartInfo.RedirectStandardOutput = true; cmd.StartInfo.CreateNoWindow = true; cmd.StartInfo.UseShellExecute = false; cmd.Start(); cmd.StandardInput.WriteLine("mkdir test"); cmd.StandardInput.Flush(); cmd.StandardInput.Close(); cmd.StandardOutput.ReadToEnd(); cmd.WaitForExit();El problema es que está creando un directorio como dice el comando, pero el símbolo del sistema no se abre. Para la tarea real, el comando es diferente en el que estoy iniciando el servidor. Entonces, para eso, el símbolo del sistema debe abrirse y mostrar los detalles del servidor.
El problema es esta línea:
cmd.StartInfo.CreateNoWindow = true;Siento que el nombre de esa propiedad se explica por sí mismo, pero esto es lo que dice la entrada de MSDN al respecto:
Valor de propiedad Booleano
truesi el proceso debe iniciarse sin crear una nueva ventana para contenerlo; en caso contrario,false. El valor predeterminado esfalse.
Además, es probable que la línea relacionada con la ejecución de shell evite que aparezca una ventana:
cmd.StartInfo.UseShellExecute = false; Le sugiero que busque en todas las propiedades de StartInfo que está usando aquí porque parece que copió el código pegado sin entenderlo en absoluto.