Je dois exécuter une commande shell à partir de mon application .NET, un peu comme os.execute
(un peu plus bas sur cette page) dans Lua. Cependant, avec une recherche rapide, je n'ai rien trouvé. Comment fait-on ça?Exécuter une commande shell à partir d'une application .NET
Répondre
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "blah.lua arg1 arg2 arg3";
p.StartInfo.UseShellExecute = true;
p.Start();
Une autre façon serait d'utiliser P/Invoke et utiliser ShellExecute directement:
[DllImport("shell32.dll")]
static extern IntPtr ShellExecute(
IntPtr hwnd,
string lpOperation,
string lpFile,
string lpParameters,
string lpDirectory,
ShowCommands nShowCmd);
Il est un moyen facile de gérer cela en C#. À l'aide de l'espace de noms System.Diagnostics, il existe une classe pour gérer les processus de génération.
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();
Il y a des paramètres supplémentaires pour gérer des choses telles que ne pas créer une fenêtre de la console, la redirection d'entrée ou de sortie, et plus tout ce que vous auriez besoin.
Vous pourriez envisager une approche asynchrone si le script prend du temps.
Voici un code qui fait cela redirige la sortie standard à capturer pour l'affichage sur un formulaire (WPF, Windows Forms, peu importe). Notez que je suppose que vous n'avez pas besoin d'entrée de l'utilisateur, il ne crée pas la fenêtre de la console, qui ressemble mieux:
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 pour l'utilisation correcte de l'arrière-plan et ne pas bloquer le fil entier. Meilleure expérience utilisateur! – ppumkin
- 1. Comment puis-je exécuter une commande shell à partir de mon application Cocoa?
- 2. Exécuter la commande shell à partir de Java
- 3. Exécuter la commande à partir des variables du script shell
- 4. Comment exécuter une commande système à partir d'une application android
- 5. Groovy exécuter « cp * » commande shell
- 6. Shell exécuter à partir de Ruby
- 7. Exécuter une commande shell en arrière-plan à partir du script
- 8. Exécuter iwconfig à partir d'une application Java
- 9. Exécuter une commande shell en arrière-plan en utilisant PHP
- 10. javascript (spidermonkey) comment exécuter une commande linux depuis js shell?
- 11. Shell - Exécuter une commande supplémentaire en cas d'échec
- 12. Exécuter la commande Shell avec une entrée personnalisée
- 13. Comment exécuter une commande shell tcsh et ignorer sélectivement l'état?
- 14. Comment conserver une fenêtre de commande de script Python ouverte à partir d'une application .Net?
- 15. dans une commande shell
- 16. Exécuter des scripts csh à partir de bash, changer le shell temporaire via la commande
- 17. Exécuter une commande usercontrol à partir d'un viewmodel
- 18. Comment appeler une application shell à partir de SQL storedprocedure?
- 19. Pouvez-vous exécuter une tâche SSIS à partir de .net?
- 20. Comment exécuter un script shell dans une application Android?
- 21. Comment exécuter une application NetBeans compilée de manière incrémentielle à partir de la ligne de commande?
- 22. Comment rediriger stdin à partir d'un script shell vers une commande dans le script shell?
- 23. Exécuter garbage collector à partir de la ligne de commande?
- 24. Comment exécuter une commande avec un paramètre à la fois dans le shell * nix?
- 25. Exécuter python à partir d'une application Android
- 26. Exécution indépendante de scripts shell à partir d'une application Java
- 27. Exécuter la commande dans Terminal à partir de l'application
- 28. Comment exécuter un script shell à partir de LaTeX?
- 29. Commande Dos à commande électrique Shell
- 30. Exécuter une application à partir d'un navigateur Web?
Je dois EXECUT un script lua ... – RCIX
@RCIX: Comment l'avez-vous fait maintenant? La manière manuelle que je veux dire. –
, c'est-à-dire mettre blah.lua somearg anotherarg thirdarg dans une commande de console. – RCIX