2009-08-10 4 views
27

In C# WPF: Voglio eseguire un comando CMD, in che modo è possibile eseguire esattamente un comando cmd a livello di codice?Esegui comando CMD dal codice

+0

Non so molto di c, C++ o C#, ma consiglierei di programmarlo per scrivere il codice in un file batch, eseguire il file batch e quindi eliminare il file batch. –

risposta

1

Stai chiedendo come aprire un comando di Windows? In tal caso, è possibile utilizzare il Process object ...

Process.Start("cmd"); 
10

Utilizzando Process.Start:

using System.Diagnostics; 

class Program 
{ 
    static void Main() 
    { 
     Process.Start("example.txt"); 
    } 
} 
2

Argh: D non il più veloce

Process.Start("notepad C:\test.txt"); 
35

Ecco un semplice esempio:

Process.Start("cmd","/C copy c:\\file.txt lpt1"); 
+3

Ci sto provando, ma il secondo parametro, l'argomento non viene realmente passato alla finestra di comando, almeno non in Windows 8.1 – William

+0

@William Ho provato questo in Windows 10 e funziona correttamente. –

+0

@MahdiRafatjah Ho provato questo in Windows 7 e anche non funziona ... IDK ... –

5

H ow su di te creat un file batch con il comando desiderato, e chiama con Process.Start

contenuti dir.bat:

dir 

quindi chiamare:

Process.Start("dir.bat"); 

chiamerà il pipistrello il file ed eseguire il dir

+0

Ottima idea! Ho fatto il Process.Start ("test.bat") ma un errore si apre dicendo "Un'eccezione non gestita di tipo 'System.ComponentModel.Win32Exception' si è verificato in System.dll". Qualche idea? – Jake

+1

Oh nvm, risolto. Grazie mille Carlo. Davvero una buona idea, ha aiutato molto. – Jake

+0

Nessun problema, felice di poterti aiutare! Non dimenticare di contrassegnarlo come la risposta corretta. – Carlo

20

Come già detto dalle altre risposte è possibile utilizzare:

Process.Start("notepad somefile.txt"); 

Tuttavia, c'è un altro modo.

È possibile esempio un oggetto di processo e chiamare il metodo di istanza di avvio:

Process process = new Process(); 
    process.StartInfo.FileName = "notepad.exe"; 
    process.StartInfo.WorkingDirectory = "c:\temp"; 
    process.StartInfo.Arguments = "somefile.txt"; 
    process.Start(); 

Facendo in questo modo permette di configurare diverse opzioni prima di iniziare il processo. L'oggetto Processo consente inoltre di recuperare informazioni sul processo mentre è in esecuzione e fornirà una notifica (tramite l'evento Exited) al termine del processo.

Aggiunta: non dimenticare di impostare 'process.EnableRaisingEvents' su 'true' se si desidera agganciare l'evento 'Exited'.

9

se si desidera avviare un'applicazione con cmd utilizzare questo codice:

string YourApplicationPath = "C:\\Program Files\\App\\MyApp.exe" 
ProcessStartInfo processInfo = new ProcessStartInfo(); 
processInfo.WindowStyle = ProcessWindowStyle.Hidden; 
processInfo.FileName = "cmd.exe"; 
processInfo.WorkingDirectory = Path.GetDirectoryName(YourApplicationPath); 
processInfo.Arguments = "/c START " + Path.GetFileName(YourApplicationPath); 
Process.Start(processInfo); 
3

È possibile utilizzare questo per lavorare cmd in C#:

ProcessStartInfo proStart = new ProcessStartInfo(); 
Process pro = new Process(); 
proStart.FileName = "cmd.exe"; 
proStart.WorkingDirectory = @"D:\..."; 
string arg = "/c your_argument"; 
proStart.Arguments = arg; 
proStart.WindowStyle = ProcessWindowStyle.Hidden; 
pro.StartInfo = pro; 
pro.Start(); 

Non dimenticare di scrivere /c prima del tuo argomento !!

+0

"pro.StartInfo = pro;" dovrebbe essere "pro.StartInfo = proStart;" sì? – amalgamate