Как я могу выполнить команду CMD в консольном приложении С#?
Очень просто сделать mysqldump в 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
и успешно отправить мою команду?
Ответы
Ответ 1
Есть ли причина, по которой вы не вызываете 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
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());
Ответ 3
Запускаете ли вы Process.Start(psi) с экземпляром ProcessStartInfo, который вы только что создали?
В любом случае, следующая работа должна выполняться:
string commandToExecute = @"c:\windows\system32\calc.exe";
Process.Start(@"cmd", @"/c " + commandToExecute);
Ответ 4
Выполнение пакетного файла на С#
Проверьте это.