FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Archivo .BAT no funciona
Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Archivo .BAT no funciona
Posted: Wed Sep 27, 2023 09:57 AM
Estimados amigos, espero que est茅n muy bien.

En esta oportunidad, acudo al foro ante el extra帽o caso que se me presenta al momento de ejecutar un archivo .BAT

Tratar茅 de explicarme lo mejor y m谩s corto posible para no confundirlos.

Mi aplicaci贸n realiza tanto el respaldo como la restauraci贸n de las bases de datos MariaDB desde una opci贸n del menu.
En el .PRG donde esto se hace, se crean y ejecutan en segundo plano, los respectivos archivos .BAT (desde c贸digo fuente) los cuales a trav茅s de comandos de consola, hacen respaldo y restauraci贸n.

Los respaldos de las bases de datos se siguen ejecutando sin ning煤n problema. Pero en la restauraci贸n se me presenta ahora lo siguiente:

Al querer ejecutar el .BAT, ocurre que el sistema operativo hace dos cosas, inserta en mitad de la instrucci贸n un numero CERO y corta la ultima parte de la instrucci贸n.
Me explcio mejor.

La orden es esta:

mysql -u vdbnr8ds_backup -prestaurardb <c:\Cuentas32\Backup\2023-09-26-H17-M18-Cuentas32BD.sql vdbnr8ds_cuentas32_demo

Si la copio del .BAT y la pego en el prompt en la carpeta de C:\Program Files\MariaDB 11.2\bin y la ejecuto, restaura perfectamente los datos.

Pero si lo hago usando el .BAT, o sea C:\Program Files\MariaDB 11.2\bin\archivo.bat -> enter sucede lo siguiente:

1.- Le aparece un cero a mitad de la instrucci贸n
2.- Corta la ultima parte de la orden.

Pongo ejemplos:

Comando completo y que funciona escribi茅ndolo directo en la consola:

C:\Program Files\MariaDB 11.2\bin\mysql -u vdbnr8ds_backup -prestaurardb <c:\Cuentas32\Backup\2023-09-26-H17-M18-Cuentas32BD.sql vdbnr8ds_cuentas32_demo

Si lo hago desde el .BAT, muestra esto arrojando el respectivo mensaje de error:

C:\Program Files\MariaDB 11.2\bin>mysql -u vdbnr8ds_backup -prestaurardb 0<C:\Cuentas32\Backup\2023-09-26-H17-M18-Cuentas32BD.sql
ERROR 1046 (3D000) at line 22: No database selected

Como pueden observar, inserta un CERO a mitad de la instrucci贸n (lo resalt茅 en rojo) , y corta el nombre de la base de datos a restaurar al final de la misma.

Ya invert铆 dos d铆as tratando de conseguir el error y no pude. Sucede lo mismo haci茅ndolo desde c贸digo fuente y tambi茅n manualmente directo en la consola.


A alguien le ha pasado algo semejante?
"Los errores en programaci贸n, siempre est谩n entre la silla y el teclado..."



Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin



Carora, Estado Lara, Venezuela.
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: Archivo .BAT no funciona
Posted: Wed Sep 27, 2023 10:53 AM
Mi estimado, buenos dias,
驴Como construyes el .bat ?, aqui te envio un ejemplo
Code (fw): Select all Collapse
Function DBackUp()
local cFile, lEsc, nHand, cComando, hCambios, cText, oBrush, oDls, oSay, cFileBackup

cFile := "backup.bat"
lEsc := .f.

IF !FFERASE( cFile )
聽 Return(.f.)
EndIf

cComando := ""

IF !FILE( cFile )

聽nHand := FCreate( cFile )
聽FWrite(nHand, cComando )
聽FClose(nHand)

聽// Respaldo Antes de la Auditoria, Nombre del DUMP
聽cFileBackup := 'respaldo_' + DTOS(Date()) + '_' + Time() + '.sql'

聽cComando := ""
聽cComando += 'mysqldump -h' + oApp:cConexion + ' -u' + oApp:cUser + ' -p' + oApp:cPassword + ' ' + oApp:cDatabase + ' > .\backup\'
聽cComando += cFileBackup + CRLF

聽hCambios := FOpen( cFile, FO_READWRITE + FO_SHARED )
聽FSeek( hCambios, 0, FS_END)
聽FWrite( hCambios, cComando )
聽FClose(nHand)

endif

//*------------- Proceso de Generacion del DUMP de la base de datos
lEsc := .F.

cText := ""

DEFINE DIALOG oDls RESOURCE "DLG_AVISO2" TITLE "Mi Respaldo ..." TRANSPARENT

聽REDEFINE SAY oSay PROMPT cText ID 100 OF oDls ;
聽COLORS CLR_WHITE

聽oDls:bStart := { || WaitRun( cFile, 0 ), lEsc := .T., oDls:End() }

ACTIVATE DIALOG oDls CENTERED VALID lEsc

rETURN (niL)
Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Re: Archivo .BAT no funciona
Posted: Wed Sep 27, 2023 11:13 AM
Hola willi, como estas?

Desde codigo, lo hago asi:
Code (fw): Select all Collapse
 聽local h

聽 聽 local cComando
聽 
聽 聽 cComando := 'mysql -u cUsuario -p'+cPassword+' < '+cArchivo+' '+_cDatabase

聽 聽 h := fcreate( ("_4.bat") ); 聽fwrite( h, 聽cComando ) ; fclose( h )
Ahora bien, despu茅s de tanto probar, quise descartar haciendo el .BAT directo con el Block de Notas de Windows, y el resultado es igual. Me presenta el mismo error. Es solo con el .BAT de restauraci贸n. Con el de respaldar funciona perfecto tanto desde c贸digo como directo hecho con block de notas.
"Los errores en programaci贸n, siempre est谩n entre la silla y el teclado..."



Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin



Carora, Estado Lara, Venezuela.
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: Archivo .BAT no funciona
Posted: Wed Sep 27, 2023 12:57 PM

Jos茅,

Saludos.

Puedes validar copiando el programa binario de maria BD en tu carpeta y ejecutar el .BAT en la misma ruta de tu programa binario.

En mi caso genero un *.bat en la misma carpeta de mi aplicaci贸n.

c:\dpsgev60\respaldo.bat

quien ejecutar谩 a mysql.exe y mysqldump.exe ubicados en una subcarpeta c:\dpsgev60\mysql

Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: Archivo .BAT no funciona
Posted: Wed Sep 27, 2023 03:03 PM
Mi Estimado, esto funciona correctamente: (sustituye lo que corresponda)
Code (fw): Select all Collapse
//------------------------------------------------------------------------------------
Function DRestore()
local cFile, lEsc, nHand, cComando, hCambios, cText, oBrush, oDls, oSay, cFileBackup, cNDBase, cUser, cPass

cNDBase 聽 聽 := "D:\SYSTEMDB\1206\MariaDb1011\bin\mysql alprogeneirl"
cFileBackUp := "D:\PRGS\SIAE\BIN\alprogen.sql"
cUser 聽 聽 聽 := "root"
cPass 聽 聽 聽 := "qazwsxedc"

cFile := "restore.bat"
lEsc := .f.

IF !FFERASE( cFile )
聽 Return(.f.)
EndIf

cComando := ""

IF !FILE( cFile )

聽nHand := FCreate( cFile )
聽FWrite(nHand, cComando )
聽FClose(nHand)

// ojo, ruta completa.....
聽cComando := 聽cNDBase + " < " + cFileBackUp + " -u " + cUser + " -p" + cPass

聽hCambios := FOpen( cFile, FO_READWRITE + FO_SHARED )
聽FSeek( hCambios, 0, FS_END)
聽FWrite( hCambios, cComando )
聽FClose(nHand)

endif

//*------------- Proceso de Generacion del DUMP de la base de datos
lEsc := .F.

cText := ""

DEFINE DIALOG oDls RESOURCE "DLG_AVISO2" TITLE "Mi Respaldo ..." TRANSPARENT

聽REDEFINE SAY oSay PROMPT cText ID 100 OF oDls ;
聽COLORS CLR_WHITE

聽oDls:bStart := { || WaitRun( cFile, 0 ), lEsc := .T., oDls:End() }

ACTIVATE DIALOG oDls CENTERED VALID lEsc

RETURN (niL)
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: Archivo .BAT no funciona
Posted: Wed Sep 27, 2023 03:09 PM

Mi estimado, el bat que queda asi:

D:\SYSTEMDB\1206\MariaDb1011\bin\mysql alprogeneirl < D:\PRGS\SIAE\BIN\alprogen.sql -u root -pqazwsxedc

Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Re: Archivo .BAT no funciona
Posted: Thu Sep 28, 2023 03:12 AM

Hola a todos colegas.

Una vez m谩s agradecido por la ayuda en este maravilloso foro.

Amigo Juan Navas, intente hacerlo como me indicaste, ya que era la v铆a m谩s r谩pida. Pero no funcion贸. Segu铆a el error. No se si fue que no supe implementarlo, pero lo hice de todas las maneras posibles. El error estaba duro de matar.

Estimado Willi, tu c贸digo funcion贸 a la perfecci贸n. Solo hice los retoques de adecuaci贸n necesarios y funciona 隆 perfecto !

Con ello solucion茅 mi problema-

Muy agradecido a ambos por sus ideas y soluciones.

Solo me queda la duda del por que dej贸 de funcionar algo que trabaj贸 bien por a帽os. Pero tampoco me voy a preocupar por eso.

Un abrazo a todos !!

"Los errores en programaci贸n, siempre est谩n entre la silla y el teclado..."



Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin



Carora, Estado Lara, Venezuela.
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: Archivo .BAT no funciona
Posted: Fri Sep 29, 2023 04:36 PM
Jose,
Gracias, voy a tomar las recomendaciones de Willy,
Wylli, agradecido.
En este sitio, un colega reporta la misma incidencia.
https://www.lawebdelprogramador.com/foros/MySQL/2151666-Error-en-importar-respaldo-con-mysqldump-y-php.html#last
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: Archivo .BAT no funciona
Posted: Fri Sep 29, 2023 04:54 PM

Jos茅

Saludos,

El resultado el .BAT qued贸 de esta manera:

c:\adp\mysql\mysql.exe SGEV60_TEST < c:\adp\dpsgev60\dpsgev60.sql -uroot -proot --host=127.0.0.1 --port=3306 > TEMP\MYSQL.LOG

Continue the discussion