Estoy tratando de invocar un script ant desde una aplicación C#. Quiero que la ventana de la consola aparezca y permanezca activa (solo llamo al símbolo del sistema ahora, pero finalmente quiero llamar a un script ant, que puede demorar hasta una hora). Este es el código que estoy usando, que alteré del original:Llamar al símbolo del sistema y dejar la ventana abierta
public void ExecuteCommandSync(object command)
{
try
{
// create the ProcessStartInfo using "cmd" as the program to be run,
// and "/c " as the parameters.
// Incidentally, /c tells cmd that we want it to execute the command that follows,
// and then exit.
System.Diagnostics.ProcessStartInfo procStartInfo =
new System.Diagnostics.ProcessStartInfo("cmd", "/k " + command);
// The following commands are needed to redirect the standard output.
// This means that it will be redirected to the Process.StandardOutput StreamReader.
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
// Do not create the black window.
procStartInfo.CreateNoWindow = false;
// Now we create a process, assign its ProcessStartInfo and start it
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
proc.WaitForExit();
}
catch (Exception objException)
{
Console.WriteLine(objException);
}
}
también desea pasar de hasta 5 parámetros, pero en este momento estoy solo preocupados por mantener la ventana abierta el tiempo suficiente para ver qué está pasando, y no estoy interesado en leer ningún contenido generado por el guión de la hormiga. No quiero pedirle a nadie que haga mi trabajo por mí, pero me he estado dando vueltas en esto por un tiempo, así que cualquier ayuda sería muy apreciada.
Eso funcionó! He estado frustrado con eso por la mayor parte de hoy. ¿Alguna idea de cómo hacer que funcione con múltiples comandos? Especialmente aquellos con espacios en blanco como: cd c: \\ users \\ – Stubbs
Los comandos con espacios deben interpretarse correctamente tal como están. Para comandos múltiples; Puede que necesite enviar los comandos a un archivo por lotes, o mirar enviar comandos a StandardInputStream, no creo que pueda enviarlo todo en una sola cadena. –
También puede enviar múltiples parámetros como este: [link] (http://stackoverflow.com/questions/5591382/how-to-execute-multiple-cammand-in-command-prompt-using-c-sharp). Esto cambia directorios y pasa 4 parámetros a un archivo por lotes. Podría ser útil para alguien. – Stubbs