'how i can execute CMD command in c# console application?
It's very simple to make a mysqldump in cmd on windows, simply:
Open cmd and put type mysqldump uroot ppassword database > c:/data.sql
This results in an SQL dump file for the desired database.
I'm writing a console application so I may run this command:
-uroot -ppass databse > location\data.sql
I tried the following code to no avail:
System.Diagnostics.ProcessStartInfo procStartInfo =
new System.Diagnostics.ProcessStartInfo("cmd", "/c " + cmd);
How might I start a cmd process and send my command successfully?
Solution 1:[1]
Is there a reason why you don't call mysqldump directly?
ProcessStartInfo procStartInfo =
new ProcessStartInfo("mysqldump", "uroot ppassword databse > c:/data.sql");
If there is a reason, your code should look like this:
ProcessStartInfo procStartInfo =
new ProcessStartInfo("cmd",
"/c \"mysqldump uroot ppassword databse > c:/data.sql\"");
Changes:
- You where missing "mysqldump" in your
cmdvariable. - You should put the command to be executed in the command line into quotes.
Solution 2:[2]
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();
/* execute "dir" */
cmd.StandardInput.WriteLine("dir");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
Solution 3:[3]
Do you run Process.Start(psi) with the ProcessStartInfo instance you have just created?
Anyway, the following should do the work:
string commandToExecute = @"c:\windows\system32\calc.exe";
Process.Start(@"cmd", @"/c " + commandToExecute);
Solution 4:[4]
Check it out.
Solution 5:[5]
To use Powershell,
Process cmd = new Process();
cmd.StartInfo.FileName = "powershell.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
/* execute "dir" */
cmd.StandardInput.WriteLine("dir");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
when you wish to run several commands in CMD say,
cmd.StandardInput.WriteLine("dir && dir");
while in powershell, use:
cmd.StandardInput.WriteLine("dir;dir");
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Daniel Hilgarth |
| Solution 2 | Silx |
| Solution 3 | Igor S. |
| Solution 4 | Community |
| Solution 5 | Joseph Wambura |
