775 Stimmen

Eingabeaufforderungsbefehle ausführen

Gibt es eine Möglichkeit, Eingabeaufforderung Befehle aus einer C#-Anwendung ausführen? Wenn ja, wie würde ich das folgende tun:

copy /b Image1.jpg + Archive.rar Image2.jpg

Dies bettet im Grunde eine RAR-Datei in ein JPG-Bild ein. Ich habe mich gefragt, ob es eine Möglichkeit gibt, dies automatisch in C# zu tun.

1162voto

RameshVel Punkte 62428

Das ist alles, was Sie tun müssen, um Shell-Befehle von C# aus auszuführen

string strCmdText;
strCmdText= "/C copy /b Image1.jpg + Archive.rar Image2.jpg";
System.Diagnostics.Process.Start("CMD.exe",strCmdText);

EDIT。

Damit wird das cmd-Fenster ausgeblendet.

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C copy /b Image1.jpg + Archive.rar Image2.jpg";
process.StartInfo = startInfo;
process.Start();

EDIT: 2

Wichtig ist, dass das Argument mit /C sonst wird es nicht funktionieren. Wie Scott Ferguson sagte: "Führt den durch die Zeichenkette angegebenen Befehl aus und beendet sich dann."

188voto

Ogglas Punkte 48648

Versucht RameshVel's Lösung aber ich konnte keine Argumente in meiner Konsolenanwendung übergeben. Wenn jemand das gleiche Problem hat, hier ist eine Lösung:

using System.Diagnostics;

Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();

cmd.StandardInput.WriteLine("echo Oscar");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());

50voto

HackerMan Punkte 888
var proc1 = new ProcessStartInfo();
string anyCommand; 
proc1.UseShellExecute = true;

proc1.WorkingDirectory = @"C:\Windows\System32";

proc1.FileName = @"C:\Windows\System32\cmd.exe";
proc1.Verb = "runas";
proc1.Arguments = "/c "+anyCommand;
proc1.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(proc1);

20voto

Matt Punkte 640

Keine der oben genannten Antworten half aus irgendeinem Grund, es scheint, als würden sie Fehler unter den Teppich kehren und die Fehlersuche bei einem Befehl erschweren. Also habe ich mich für etwas wie dieses entschieden, vielleicht hilft es jemand anderem:

var proc = new Process
{
    StartInfo = new ProcessStartInfo
    {
        FileName = @"C:\Program Files\Microsoft Visual Studio 14.0\Common7\IDE\tf.exe",
        Arguments = "checkout AndroidManifest.xml",
        UseShellExecute = false,
        RedirectStandardOutput = true,
        CreateNoWindow = true,
        WorkingDirectory = @"C:\MyAndroidApp\"
    }
};

proc.Start();

13voto

Uniquedesign Punkte 469

Wenn Sie das cmd-Fenster geöffnet lassen oder es in Winform/Wpf verwenden möchten, dann verwenden Sie es wie folgt

    string strCmdText;
//For Testing
    strCmdText= "/K ipconfig";

 System.Diagnostics.Process.Start("CMD.exe",strCmdText);

/K

Wird das cmd-Fenster offen halten

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X