Как я могу выполнить команду CMD в C # консольном приложении? - PullRequest
13 голосов
/ 06 апреля 2011

Очень просто создать mysqldump в cmd для Windows, просто:

Открыть 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 и успешно отправить мою команду?

Ответы [ 4 ]

33 голосов
/ 06 апреля 2011
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());
6 голосов
/ 06 апреля 2011

Есть ли причина, по которой вы не вызываете 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\"");

Изменения:

  • Вы пропустили «mysqldump» в переменной cmd.
  • Вы должны поместить команду для выполнения в командной строке в кавычки.
2 голосов
/ 06 апреля 2011

Запускаете ли вы Process.Start (psi) с только что созданным экземпляром ProcessStartInfo?

В любом случае, следующее должно работать:

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

1 голос
/ 06 апреля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...