Necesito ejecutar un comando de shell desde mi aplicación .NET, similar a os.execute
(un poco más abajo en esa página) en Lua. Sin embargo, con una búsqueda superficial no pude encontrar nada. ¿Cómo lo hago?Ejecutar un comando de shell desde una aplicación .NET
Respuesta
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "blah.lua arg1 arg2 arg3";
p.StartInfo.UseShellExecute = true;
p.Start();
Otra manera sería utilizar P/Invoke y utilizar ShellExecute directamente:
[DllImport("shell32.dll")]
static extern IntPtr ShellExecute(
IntPtr hwnd,
string lpOperation,
string lpFile,
string lpParameters,
string lpDirectory,
ShowCommands nShowCmd);
hay una manera más fácil de manejar esto en C#. Usando el espacio de nombres System.Diagnostics, hay una clase para manejar procesos de desove.
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = "App.exe";
process.StartInfo.Arguments = "arg1 arg2 arg3";
process.Start();
Console.WriteLine(process.StandardOutput.ReadToEnd();
hay parámetros adicionales para manejar las cosas como no se cree una ventana de la consola, la reorientación de entrada o salida, y la mayoría todo lo demás que había necesidad.
Es posible que desee considerar un enfoque asincrónico si el script tarda un tiempo.
Aquí hay un código que lo hace más redirecciona la salida estándar para capturar para mostrar en un formulario (WPF, Windows Forms, lo que sea). Tenga en cuenta que estoy suponiendo que no necesita de entrada del usuario, por lo que no crea la ventana de la consola, que se ve mejor:
BackgroundWorker worker = new BackgroundWorker();
...
// Wire up event in the constructor or wherever is appropriate
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
...
// Then to execute your script
worker.RunWorkerAsync("somearg anotherarg thirdarg");
void worker_DoWork(object sender, DoWorkEventArgs e)
{
StringBuilder result = new StringBuilder();
Process process = new Process();
process.StartInfo.FileName = "blah.lua";
process.StartInfo.Arguments = (string)e.Argument;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;
process.Start();
result.Append(process.StandardOutput.ReadToEnd());
process.WaitForExit();
e.Result = result.AppendLine().ToString();
}
void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Result != null) console.Text = e.Result.ToString();
else if (e.Error != null) console.Text = e.Error.ToString();
else if (e.Cancelled) console.Text = "User cancelled process";
}
+1 para usar el trabajador de fondo correctamente y no bloquear todo el hilo. ¡Mejor experiencia de usuario! – ppumkin
- 1. Cómo ejecutar un comando de shell desde un script php
- 2. ¿Cómo ejecutar comandos de shell desde una aplicación Mac/MacRuby?
- 3. Ejecutar comando de shell desde un cliente MySQL?
- 4. Activar una aplicación o script en un comando shell
- 5. Ejecutar comando de shell en Clojure desde la ubicación específica
- 6. Cómo ejecutar un comando de shell a través de Python
- 7. ejecute el comando de shell desde java
- 8. Ejecutar un comando de shell cuando se agrega un archivo
- 9. Cómo ejecutar un script de shell de Unix desde Windows
- 10. Ejecutar un comando de shell desde un script de shell sin detenerse si se produce un error
- 11. ¿Cómo ejecutar un comando de shell a través de vimscript?
- 12. Ejecutando un comando de shell desde Node.js sin buffering salida
- 13. ejecutar la aplicación de línea de comando interactiva desde java
- 14. Cómo ejecutar el comando shell en Javascript
- 15. ¿Cómo ejecutar un script de shell Unix desde código Java?
- 16. ¿Cómo puedo ejecutar un comando de shell usando VBA?
- 17. Quiere invocar un comando linux shell desde Java
- 18. ¿Cómo ejecutar un paquete SSIS desde .NET?
- 19. ¿Cómo ejecutar el shell django desde Emacs?
- 20. Cómo ejecutar shell builtin desde Scala
- 21. ¿Cómo ejecutar un script de shell desde C en Linux?
- 22. ¿Cómo podemos ejecutar un archivo de script de shell desde mi aplicación Android?
- 23. Ejecutar el comando Shell sobre MySql en el host remoto
- 24. Ejecutar comando de línea de comando desde NSIS
- 25. ¿Cómo puedo configurar Eclipse para ejecutar un constructor externo o un comando de shell?
- 26. ¿Cómo ejecutar el comando de shell después de que la compilación finalizó desde .pro en QT?
- 27. Erlang shell desde un navegador?
- 28. ¿Podemos ejecutar el comando del sistema operativo desde sqlite3
- 29. Ejecutar el comando vim desde la línea de comandos
- 30. Ejecutar un comando de línea de comandos desde CruiseControl.NET
necesito Execut un script lua ... – RCIX
@RCIX: ¿Cómo ¿lo hiciste ahora? Me refiero a la forma manual. –
es decir, poner 'blah.lua somearg anotherarg thirdarg' en un comando de consola. – RCIX