[英]how i can execute CMD command in c# console application?
在windows上做一个mysqldump in cmd
很简单,简单的说:
打开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
进程并成功发送我的命令?
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());
为什么不直接调用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”的位置。 您是否使用刚刚创建的ProcessStartInfo实例运行Process.Start(psi)?
无论如何,以下应该做的工作:
string commandToExecute = @"c:\\windows\\system32\\calc.exe";
Process.Start(@"cmd", @"/c " + commandToExecute);
看看这个。
要使用 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());
当你想在 CMD 中运行多个命令时,说,
cmd.StandardInput.WriteLine("dir && dir");
而在 powershell 中,使用:
cmd.StandardInput.WriteLine("dir;dir");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.