【问题标题】:how i can execute CMD command in c# console application?我如何在 C# 控制台应用程序中执行 CMD 命令?
【发布时间】:2023-04-08 11:07:02
【问题描述】:

在windows上cmd做一个mysqldump很简单,很简单:

打开cmd 输入mysqldump uroot ppassword 数据库> c:/data.sql

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

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

-uroot -ppass databse  > location\data.sql

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

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

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

【问题讨论】:

  • 你应该详细说明错误是什么,发生了什么......也许找不到 CMD 尝试将完整路径放在那里
  • 在命令行添加密码安全吗...?

标签: c# .net mysql sql database


【解决方案1】:
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());

【讨论】:

    【解决方案2】:

    不直接调用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”。
    • 您应该将命令行中要执行的命令放在引号中。

    【讨论】:

    • 原因很简单。新手在不正确了解所有内容时永远无法做到这一点。我会帮助他们,然后他们就可以轻松地做到这一点。
    【解决方案3】:

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

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

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

    【讨论】:

    • 这正是我要找的,谢谢朋友
    【解决方案4】:

    Executing Batch File in C#

    检查一下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      相关资源
      最近更新 更多