Ejecutar comandos en el CMD de Windows desde C#
El ejecutar un proceso desde .NET no es muy complicado (no
solo la consola) gracias a que se tienen las clases de “System.Diagnostics” y
en particular la clase “Process”, que permite realizar llamadas a Procesos
externos.
Para este ejemplo voy a crear una aplicación muy simple
llamada CMD Executer que su única función es ejecutar comandos CMD.
Primero vamos a crear una clase estática llamada
“ExecuteCommand” que recibe como parámetro un comando como cadena de texto:
static void ExecuteCommand(string _Command)
{
//Indicamos que deseamos inicializar el proceso cmd.exe junto a un comando de arranque.
//(/C, le indicamos al proceso cmd que deseamos que cuando termine la tarea asignada se cierre el proceso).
//Para mas informacion consulte la ayuda de la consola con cmd.exe /?
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + _Command);
// Indicamos que la salida del proceso se redireccione en un Stream
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
//Indica que el proceso no despliegue una pantalla negra (El proceso se ejecuta en background)
procStartInfo.CreateNoWindow = false;
//Inicializa el proceso
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
//Consigue la salida de la Consola(Stream) y devuelve una cadena de texto
string result = proc.StandardOutput.ReadToEnd();
//Muestra en pantalla la salida del Comando
Console.WriteLine(result);
}
Nuestro siguiente paso, para que parezca una consola
verdadera es crear un ciclo while infinito, que se detenga cuando ingresemos el
comando “Salir”:
static void Main(string[] args)
{
string command = "dir";
Console.WriteLine("CMD Executer V.0.1");
Console.WriteLine("Last Release 05 - Febraury - 2012");
while (true)
{
Console.Write("#:");
command = Console.ReadLine();
if (command == "Salir" || command == "salir")
{
break;
}
ExecuteCommand(command);
}
}
Ahora cuando hagamos correr nuestro programa tendremos lo
siguiente:
Suerte!
Muchas gracias! Realmente me fue de ayuda.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarMagnifico post, realmente me sacaste de un aprieto! me gustaría saber si hay alguna forma de que no sea visible la ventana de cmd, al momento de ejecutar la función? Muchas Gracias.!
ResponderEliminarHola, en el código de más arriba a aparece en False, pero debes cambiarlo a True
EliminarprocStartInfo.CreateNoWindow = true;
En las propiedades del processInfo establece esto:
ResponderEliminarWindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
Con esto no se muestra la ventana de la aplicación que ejecutes.
cuando ejecuto el proyecto funciona bien , pero si solo ejecuto el .exe no funciona.
ResponderEliminarGracias
ResponderEliminarMuchas gracias. Me ha servido de mucho :)
ResponderEliminarHola muy buen aporte, ahora necesito una mano sobre eso, yo ejecuto un archivo .bat desde c#.. el cual me ejecuta un comando de una aplicación (gpg para encriptación) el mismo al ejecutar me pide ingreso de texto (contraseña de encriptación) con una ventana emergente... si o si necesitaría poder escribir en esa ventana emergente sin que se interactue con el usuario, es decir que lo haga todo por codigo... Aclaro de antemano encontré una solución
ResponderEliminarque es enviarlo junto con el comando en el .bat lo que quiero escribir de la siguiente manera a modo de ejemplo :
echo "contraseña" | gpg -o archivosalida.txt archivoAdesencriptar.gpg
al ejecutar por primera vez la parte 'echo "contraseña" ' no me toma, me lanza dicha ventana emergente de la aplicación, pero al realizarlo por segunda vez si funciona... quisera saber como evitar ese ingreso por primera vez... sería esa la cuestion..
Muchas gracias desde ya
Saludos
¿Esto Funciona para WEB FORM?
ResponderEliminargracias por el tip!
ResponderEliminarGracias.
ResponderEliminarAgradecido. Mucho éxito.
ResponderEliminarwow!! muchas gracias me sirvió al cien uwu
ResponderEliminarhola, necesito ejecutar el simbolo del sistemas con una tarea programada.
ResponderEliminargracias.
liatranti-iOmaha Cindy Ross https://marketplace.visualstudio.com/items?itemName=0discosco-su.Mount-Amp--Blade--Warband-gratuita-2022
ResponderEliminarfiltcorsembhluh
nannaAadra Karen Rogers click
ResponderEliminarlink
https://colab.research.google.com/drive/1IQXTSlHN9Os2Bma4HzELlU3bhtiz3VeX
download
perbenonovs
quirioinme Kim Waters Check
ResponderEliminarget it now
Get it
salopgovel