2009-08-10 2 views
27

In C# WPF: Ich möchte einen CMD-Befehl ausführen, wie genau kann ich einen Befehl cmd programmgesteuert ausführen?Führen Sie CMD-Befehl von Code

+0

ich weiß nicht viel über c, C++ oder C#, aber ich würde empfehlen, es zu programmieren, um den Code in eine Batchdatei zu schreiben, die Batchdatei auszuführen und dann die Batchdatei zu löschen. –

Antwort

1

Fragen Sie, wie Sie ein Befehlsfenster aufrufen? Wenn ja, können Sie die Process object verwenden ...

Process.Start("cmd"); 
10

Process.Start Verwendung:

using System.Diagnostics; 

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

Argh: D nicht die schnellste

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

Hier ist ein einfaches Beispiel:

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

Ich versuche das, aber der zweite Parameter, das Argument wird nicht wirklich an das Befehlsfenster übergeben, zumindest nicht in Windows 8.1 – William

+0

@William Ich habe dies in Windows 10 getestet und es funktioniert einwandfrei. –

+0

@MahdiRafatjah Ich habe das in Windows 7 getestet und es funktioniert auch nicht ... idk ... –

5

H ow über Sie eine Batch-Datei mit dem Befehl creat Sie wollen, und nennen Sie es mit Process.Start

dir.bat Inhalt:

dir 

dann rufen:

Process.Start("dir.bat"); 

Wird die Fledermaus nennen Datei und führen Sie das Verzeichnis

+0

Großartige Idee! Ich habe den Process.Start ("test.bat") ausgeführt, aber ein Fehler erscheint mit der Meldung "Eine nicht behandelte Ausnahme des Typs 'System.ComponentModel.Win32Exception' ist in System.dll aufgetreten". Irgendwelche Ideen? – Jake

+1

Oh nvm, reparierte es. Vielen Dank Carlo. Wirklich gute Idee, hat mir sehr geholfen. – Jake

+0

Kein Problem, froh, dass ich helfen konnte! Vergessen Sie nicht, dies als die richtige Antwort zu markieren. – Carlo

20

Wie die anderen Antworten erwähnt können Sie:

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

Es gibt jedoch einen anderen Weg.

können Sie beispielsweise ein Prozessobjekt und rufen Sie das Startinstanzmethode:

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

es auf diese Weise tun können Sie weitere Optionen konfigurieren, bevor Sie den Vorgang starten. Das Process-Objekt ermöglicht es Ihnen auch, während der Ausführung Informationen über den Prozess abzurufen, und Sie erhalten eine Benachrichtigung (über das Exited-Ereignis), wenn der Prozess abgeschlossen ist.

Zusatz: Vergessen Sie nicht, 'process.EnableRaisingEvents' auf 'true' zu setzen, wenn Sie das 'Exited' Event haken wollen.

9

wenn Sie wollen Anwendung starten mit cmd diesen Code verwenden:

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

diese Weise können Sie cmd in C# arbeiten:

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(); 

Vergessen Sie nicht zu schreiben /c vor Ihrem Argument !!

+0

"pro.StartInfo = pro;" sollte "pro.StartInfo = proStart;" Ja? – amalgamate