我如何在c#console应用程序中执行CMD命令?

在Windows上的cmd创建一个mysqldump非常简单,只需:

打开cmd并输入类型mysqldump uroot ppassword database> c:/data.sql

这会生成所需数据库的SQL转储文件。

我正在编写一个控制台应用程序,所以我可以运行这个命令:

 -uroot -ppass databse > location\data.sql 

我尝试了以下代码无济于事:

 System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + cmd); 

我如何启动cmd进程并成功发送命令?

有没有理由不直接调用mysqldump?

 ProcessStartInfo procStartInfo = new ProcessStartInfo("mysqldump", "uroot ppassword databse > c:/data.sql"); 

如果有原因,您的代码应如下所示:

 ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", "/c \"mysqldump uroot ppassword databse > c:/data.sql\""); 

变化:

  • 您在cmd变量中缺少“mysqldump”的地方。
  • 您应该将要在命令行中执行的命令放入引号中。
 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()); 

您是否使用刚刚创建的ProcessStartInfo实例运行Process.Start(psi)?

无论如何,以下应该做的工作:

string commandToExecute = @"c:\windows\system32\calc.exe";
Process.Start(@"cmd", @"/c " + commandToExecute);

在C#中执行批处理文件

看看这个。