Ho bisogno di eseguire un comando shell dalla mia applicazione .NET, non diversamente da os.execute
(un po 'più in basso su quella pagina) in Lua. Tuttavia con una ricerca superficiale non ho trovato nulla. Come lo faccio?Eseguire un comando shell da un'applicazione .NET
risposta
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "blah.lua arg1 arg2 arg3";
p.StartInfo.UseShellExecute = true;
p.Start();
Un altro modo sarebbe quello di utilizzare P/Invoke e utilizzare ShellExecute direttamente:
[DllImport("shell32.dll")]
static extern IntPtr ShellExecute(
IntPtr hwnd,
string lpOperation,
string lpFile,
string lpParameters,
string lpDirectory,
ShowCommands nShowCmd);
C'è un modo semplice per gestire questo in C#. Utilizzando lo spazio dei nomi System.Diagnostics, esiste una classe per gestire i processi di spawning.
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();
Non ci sono parametri aggiuntivi per gestire le cose come non la creazione di una finestra di console, il reindirizzamento ingresso o uscita, e la maggior parte qualsiasi altra cosa avresti bisogno.
Si potrebbe voler considerare un approccio asincrono se lo script richiede un po 'di tempo.
Ecco un codice che consente di reindirizzare l'output standard da acquisire per la visualizzazione su un modulo (WPF, Windows Forms, qualunque sia). Si noti che io sto assumendo che non è necessario input degli utenti, in modo da non creare la finestra della console, che sembra migliore:
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 per utilizzare correttamente l'operatore in background e non bloccare l'intero thread. Esperienza utente molto migliore! – ppumkin
- 1. Esecuzione di un comando shell da gulp
- 2. Eseguire un comando shell da uno script di shell senza fermarsi, se si verifica un errore
- 3. Eseguire una shell di comando a Jenkins
- 4. Sublime text 2 - Come eseguire un comando shell su ssh?
- 5. Come eseguire il comando shell in Javascript
- 6. Esecuzione di un comando shell
- 7. Eseguire una shell di comando Django dalla riga di comando
- 8. Come eseguire un comando shell tramite il codice PHP?
- 9. Come posso eseguire un comando shell usando VBA?
- 10. Come eseguire un comando shell nel file spec RPM?
- 11. eseguire un comando shell (ctags) in cmake e make
- 12. Eseguire ripetutamente un comando shell fino a quando non riesce?
- 13. Esegui il comando shell da un client MySQL?
- 14. Desidero richiamare un comando di shell linux da Java
- 15. Esecuzione di due server di nodi da un singolo comando shell utilizzando uno script di shell
- 16. esegue il comando shell da java
- 17. Output dell'ultimo comando shell
- 18. Come posso eseguire un comando Minitab via .NET?
- 19. Come eseguire la shell django da Emacs?
- 20. shell linux: come leggere l'argomento del comando da un file?
- 21. Come eseguire shell integrata da Scala
- 22. Come eseguire script di shell da LaTeX?
- 23. Come eseguire il comando di shell prima di compilare l'attività?
- 24. Come eseguire il comando della shell interattiva all'interno di node.js?
- 25. Come eseguire il comando shell nella programmazione del kernel?
- 26. Come eseguire i comandi della shell da un'applicazione Mac/MacRuby?
- 27. Esecuzione da riga di comando shell Cocoa/Objective-C
- 28. Hbase put comando shell
- 29. Come si chiama un programma da riga di comando da un'estensione shell di gnome?
- 30. Come eseguire un comando shell per compilare un plug-in Jenkins Dynamic Choice Parameter
ho bisogno di execut uno script lua ... – RCIX
@RCIX: come lo hai fatto ora? Il modo manuale intendo. –
, cioè mettendo 'blah.lua somearg anotherarg thirdarg' in un comando della console. – RCIX