2011-04-06 3 views
10

그것은 단순히 창에 cmd에서 mysqldump를을하는 것은 매우 간단합니다 :어떻게 C# 콘솔 응용 프로그램에서 CMD 명령을 실행할 수 있습니까?

열기 cmd 넣어 타입 mysqldump를 uroot의 ppassword 데이터베이스> C :

이에 대한 SQL 덤프 파일이 만들어 /data.sql 원하는 데이터베이스.

나는 내가이 명령을 실행할 수있는 콘솔 응용 프로그램을 쓰고 있어요는 :

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

가 어떻게이 cmd 프로세스를 시작할 수 있습니다

-uroot -ppass databse > location\data.sql 

나는 아무 소용이 다음 코드를 시도 내 명령을 성공적으로 보낼 수 있습니까?

+0

어떤 오류가 발생했는지 자세히 설명해야합니다. 어쩌면 CMD를 찾을 수 없습니다. 거기에 전체 경로를 넣으려고하십시오. – Hanan

+0

명령 줄에 암호를 추가해도 안전한가요? ...? – goorj

답변

5

직접 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는을"실종.
  • 명령 줄에서 실행될 명령을 따옴표로 묶어야합니다.
+0

이유는 간단합니다. 초보자는 모든 것을 제대로 알지 못할 때마다 절대 그렇게 할 수 없습니다. 나는 그들이 그것을 쉽게 할 수있게 도와 준다. –

27
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()); 
1

방금 ​​만든 ProcessStartInfo 인스턴스로 Process.Start (psi)를 실행합니까?

어쨌든, 다음 작업을 수행해야합니다

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

+0

정확히 내가 뭘 찾고있어, 고마워 친구 – smoothumut

관련 문제