2011-04-06 24 views
10

Bu sadece, pencerelerde cmd bir mysqldump yapmak çok basit:C# konsol uygulamasında CMD komutunu nasıl kullanabilirim?

Açık cmd ve koyun türü Mysqldump uroot pParola veritabanı> c:

Bu bir SQL dökümü dosyasında sonuçlanır /data.sql istenen veritabanı.

Ben bu yüzden bu komutu çalıştırabilir bir konsol uygulaması yazıyorum:

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

nasıl cmd süreci başlayabilir:

-uroot -ppass databse > location\data.sql 

Ben boşuna aşağıdaki kodu çalıştı ve komutumu başarıyla gönderilsin mi?

+0

Hatanın ne olduğunu açıklamanız gerekir, ne olur .. belki CMD bulunamıyor – Hanan

+0

Tam yolunu koymaya çalışın Komut satırına parola eklemek güvenli midir? – goorj

cevap

5

doğrudan Mysqldump demiyorlar bir sebebi var mı? bir sebebi varsa

ProcessStartInfo procStartInfo = 
    new ProcessStartInfo("mysqldump", "uroot ppassword databse > c:/data.sql"); 

, kod aşağıdaki gibi görünmelidir:

ProcessStartInfo procStartInfo = 
    new ProcessStartInfo("cmd", 
     "/c \"mysqldump uroot ppassword databse > c:/data.sql\""); 

Değişiklikleri:

  • Sen cmd değişkende "mysqldump" kayıp.
  • Komut satırında yürütülecek komutu tırnak içine almalısınız.
+0

nedeni basittir. acemi, her şeyi düzgün bilmediği zaman asla yapamaz. Onlara yardım etmesini sağlarım, sonra bunu kolayca yapabilirler. –

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

Yeni oluşturduğunuz ProcessStartInfo örneğiyle Process.Start (psi) çalıştırıyor musunuz?

Neyse, şu işi yapmalıdır:

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

+0

tam olarak aradığım şey, teşekkürler arkadaşım – smoothumut

İlgili konular