none
Comando MS-DOS desde Aplicacion C#

    Pregunta

  • Hola buenas tardes, Mi duda es la siguiente, lo que pasa esque estoy tratando de hacer un respaldo sencillo de una base de datos en Mysql desde C#, pero esto lo queiro hacer ejecutando el comando como si lo hiciera directamente en ms-DOS, para los que no saben de mySql el comando ms-DOS para realizar un respaldo de una base de datos es el siguiente

    C:\mysqldump -u[usuario] -p[password] basededatos > C:\bdBackup.sql

    por ejemplo eso: viendolo mas realista quedaria asi:

    c:\mysqldump -uroot -ppassw bdexample > c:\backupbdexample.sql

    esto es lo que quiero que haga desde mi aplicacion, es decir que se habra el cmd y ejecute ese comando, ya lo intente de algunas formas y nada, no me crea el backup, ya lo estube viendo en este mismo foro pero no encuentro solucion, espero que puedan ayudarme. de antemano muchas gracias.

    nota: estos son algunos codigos que utilice:

     

    System.Diagnostics.ProcessStartInfo back = new System.Diagnostics.ProcessStartInfo("cmd.exe", @"/C c:\mysqldump -uroot -ppassw " + this.txtNombre.Text + " > c:\backup.sql");

    back.Verb = "open";

    System.Diagnostics.Process.Start(back);

    //

    System.Diagnostics.ProcessStartInfo back = new System.Diagnostics.ProcessStartInfo("cmd.exe", @"/C c:\mysqldump -uroot -ppassw " + this.txtNombre.Text + " > C:\backup.sql");

     

    jueves, 25 de marzo de 2010 1:29

Respuestas

  • hola

    no has analizado algo como esto

    http://forums.mysql.com/read.php?47,214274,222399#msg-222399

     

    como veras ejecuta directo el mysqldump, pasando el path a este comando

    algo que tambine note es que no redirige la salida sino que la toma, y la escribe  aun archivo, lo veras cuando usa esta linea

    SW.Write(p.StandardOutput.ReadToEnd());

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta joelin_232 viernes, 26 de marzo de 2010 1:44
    jueves, 25 de marzo de 2010 2:54

Todas las respuestas

  • hola

    no has analizado algo como esto

    http://forums.mysql.com/read.php?47,214274,222399#msg-222399

     

    como veras ejecuta directo el mysqldump, pasando el path a este comando

    algo que tambine note es que no redirige la salida sino que la toma, y la escribe  aun archivo, lo veras cuando usa esta linea

    SW.Write(p.StandardOutput.ReadToEnd());

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta joelin_232 viernes, 26 de marzo de 2010 1:44
    jueves, 25 de marzo de 2010 2:54
  • hola...

    podrias tambien crearte un .bat y ahi tener todos los comandos que se ejecutan en la consola ..luego desde tu aplicacion ejecutarla con Process.Start..


    Pablo González Desarrollo de Sistemas. Ecuasoftware.Net Ecuador.
    jueves, 25 de marzo de 2010 13:46
  • OK Gracias en estos momentos lo estoy checando.

    jueves, 25 de marzo de 2010 23:12
  • gracias dejame checarlo
    jueves, 25 de marzo de 2010 23:12
  • Hola estoy tratando de hacer lo que me pasaste pero me marca un error en esta parte

     

    Process p = Process.Start(proc);

    me dice que el sistema no encuentra el path especificado.

     

    ya encontre el error, era un pequeño error de sintaxis, pero ahora se queda freceado en esta parte

    sw.Write(p.StandardOutput.ReadToEnd()); de ahi en adelante no hace nada.

    jueves, 25 de marzo de 2010 23:38
  • hola

    antes de usar la linea

    sw.Write(p.StandardOutput.ReadToEnd());

    en el codigo, porque no pruebas lanzar el comando de forma visual para poder ver que esta sucdiento

    por ahi se queda en ese punto porque esta esperando algun mensaje de confirmacion del usuario

    o hay algun error y el proceso no termina

    si lanzas el proceso pero indicando que este se visualice podras ver que sucede, luego una vez que todo este correcto, podrias ahi si agregar para grabar la salida por pantalla

    ProcessStartInfo.WindowStyle (Propiedad)

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 26 de marzo de 2010 1:11
  • si ya encontre mi error era en esta parte

    --host = localhost --user = root --password = pass

    yo lo ponia -host = localhost -u = root -p = pass

    cuando lo correcto es la primera linea; Bueno de todas formas termine por hacerlo de otra forma, le sdejo la pagina para quien le sirva de ayuda;

    http://www.webprogramacion.com/168/csharp/copias-de-seguridad-en-mysql.aspx solo tiene un error, pero es facil de detectar, ya se darancuentam, es una simple linea de codigo que no va. Bueno muchas gracias por su ayuda y espero que les sirva la pagina. 

    viernes, 26 de marzo de 2010 1:48