Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-04-2012
dmartinezn dmartinezn is offline
Miembro
 
Registrado: ene 2012
Ubicación: Cuba - Venezuela
Posts: 38
Poder: 0
dmartinezn Va por buen camino
Ejecutar .bat de un backup mysql desde c++ builder 6 ó XE

Saludos a todos
Estoy tratando de hacer un backup de una BD mysql, para ello cree un .bat con el siguiente código:
Código:
set FECHA=%date%
set FECHA=%FECHA:/=%
set FECHA=%FECHA: =%
set FECHA=%FECHA::=%
set FECHA=%FECHA:,=%
mysqldump.exe --opt --password=damian --user=damian test> D:\backups\Backup_%FECHA%.sql
Cuando le doy doble clic al .bat (Backup.bat) me genera el backup perfectamente por fechas como lo quiero (Backup_13042012.sql). Ahora lo que quiero lograr es ejecutar ese .bat (Backup.bat) desde c++, pero con el código que lo hago me genera el .sql (Backup_13042012.sql) vacío, no se si será problema del código que utilizo o que desde c++ no podría ejecutar el mysqldump.exe que se encuentra dentro del Backup.bat. Acá les dejo las 2 formas como he tratado de hacerlo y en ambas me genera el .sql vacío.
Saludos y espero que puedan corregirme que estoy haciendo mal.
Código:
String Destino= ExtractFilePath(Application->ExeName)+"web server\\mysql\\bin\\Backup.bat";
   SHELLEXECUTEINFO lpExecInfo;
   memset(&lpExecInfo, 0, sizeof(SHELLEXECUTEINFO));
   lpExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
   lpExecInfo.lpFile = Destino.c_str();
   lpExecInfo.lpParameters = 0;
   lpExecInfo.lpDirectory = 0;
   lpExecInfo.lpVerb = 0;
   lpExecInfo.nShow = SW_NORMAL;
   lpExecInfo.fMask = 0;
   ShellExecuteEx(&lpExecInfo);
   String Dia = Date();
   ShowMessage("La salva de la BD fue creada satisfactoriamente con la Fecha " + Dia);
Código:
ShellExecuteA(NULL,"open","D:\\Damian\\web server\\mysql\\bin\\Backup.bat",NULL,"",SW_SHOWNORMAL);
Tambien he probado utilizando ShellExecute en ves de ShellExecuteA
Responder Con Cita
  #2  
Antiguo 13-04-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 20
olbeup Va camino a la fama
He probado esto y funciona correctamente

Fichero notepd.bat
Código:
@echo off
cls
set fichero="%1%date%"
set fichero=%fichero:/=%
notepad.exe %fichero%
exit
Código Delphi [-]
ShellExecute(Handle, 'Open', 'C:\Windows\notepad.exe', nil, nil, SW_SHOWDEFAULT);
ShellExecute(Handle, 'Open', 'C:\notepd.bat', nil, nil, SW_SHOWDEFAULT);
ShellExecute(Handle, 'Open', 'C:\notepd.bat', 'Prueba.txt', 'C:\', SW_SHOWDEFAULT);

Un saludo
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por olbeup fecha: 13-04-2012 a las 19:46:12.
Responder Con Cita
  #3  
Antiguo 13-04-2012
dmartinezn dmartinezn is offline
Miembro
 
Registrado: ene 2012
Ubicación: Cuba - Venezuela
Posts: 38
Poder: 0
dmartinezn Va por buen camino
Gracias por responder, en el caso del notepad funciona perfectamente, pero el problema está en lo que le plantee anteriormente cuando se trata del mysqldump.exe dentro del .bat
Responder Con Cita
  #4  
Antiguo 13-04-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 20
olbeup Va camino a la fama
Es posible que sea la ruta
Código Delphi [-]
ShellExecute(Handle,'Open','D:\\Damian\\web server\\mysql\\bin\\Backup.bat',nil,'D:\\Damian\\web server\\mysql\\bin',SW_SHOWDEFAULT);

Un saludo
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por olbeup fecha: 13-04-2012 a las 19:55:11.
Responder Con Cita
  #5  
Antiguo 13-04-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo creo que el problema es que ShellExecute no maneja la redirección de la salidad de un comando. Tendrías que usar CreateProcess especificando una tubería (pipe) de sailida para capturar el volcado de mysqldump.

Sin embargo, creo que puedes optar por algo mucho más sencillo, que es especificar el archivo de salida como parámetro de mysqldump usando la opción -r:

Código:
mysqldump --password=damian --user=damian test -r D:\backups\Backup_%FECHA%.sql
// Saludos
Responder Con Cita
  #6  
Antiguo 13-04-2012
dmartinezn dmartinezn is offline
Miembro
 
Registrado: ene 2012
Ubicación: Cuba - Venezuela
Posts: 38
Poder: 0
dmartinezn Va por buen camino
Saludos
Esa opción que usted me da como podría utilizarla desde el c++ ?,la probé y funciona pero el problema está en como llamo ahora a ese .bat para que me haga lo que quiero.
Responder Con Cita
  #7  
Antiguo 13-04-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues igual a como lo tienes ahora. Es decir, en el bat, en la línea del mysqladmin pones el cambio que te menciono.

Ahora bien, en realidad yo creo que puedes olvidarte del BAT. Calcula la fecha desde tu aplicación y manda llamr directamente a mysqladmin con ShellExecute.

Por cierto, no entiendo qué es lo que hace tu BAT con la fecha.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Backup y Restore desde delphi 7 & mysql MRS@N MySQL 3 06-05-2012 03:57:28
backup Mysql desde c++ builde 6 dmartinezn MySQL 1 22-01-2012 14:41:58
Problema para ejecutar una aplicacion con mysql desde una pc cliente karaoke MySQL 4 23-01-2008 19:25:58
Ejecutar un Backup sierraja Firebird e Interbase 11 18-09-2006 18:33:07
Como ejecutar un archivo .chm desde C++ Builder 5? mapch C++ Builder 1 13-08-2004 08:01:47


La franja horaria es GMT +2. Ahora son las 20:04:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi