PROCEDURE backupdb
LOCAL Cdrive
STORE [] TO Cdrive
IF ! FILE(FULLPATH(CURDIR())+ALLTRIM(UPPER(_SCREEN.obj_sysdatabasename))+[.BAT]) THEN
IF DIRECTORY(SYS(5)+[\Program Files\PostgreSQL\9.3\bin\]) THEN
IF ! DIRECTORY(FULLPATH(CURDIR())+[BACKUPDB\]) THEN
MKDIR ALLTRIM(FULLPATH(CURDIR())+[BACKUPDB\])
ENDIF
IF DIRECTORY(FULLPATH(CURDIR())+[BACKUPDB\]) THEN
Cdrive=LEFT(SYS(5), 1)
lnFile=FCREATE(FULLPATH(CURDIR())+ALLTRIM(UPPER(_SCREEN.obj_sysdatabasename))+[.BAT])
IF lnFile<0 THEN
cerror="Error, Al Crear Archivo :"+ALLTRIM(UPPER(_SCREEN.obj_sysdatabasename))+[.BAT]
ELSE
FPUTS(lnFile, [@ECHO OFF])
FPUTS(lnFile, [@setlocal enableextensions])
FPUTS(lnFile, [@cd /d "%~dp0"])
FPUTS(lnFile, [SET PGPATH=]+Cdrive+[:\"Program Files"\PostgreSQL\9.3\bin\])
FPUTS(lnFile, [SET SVPATH=]+Cdrive+[:\mapasoft\backupdb\])
FPUTS(lnFile, [SET PRJDB=]+ALLTRIM(LOWER(_SCREEN.obj_sysdatabasename))+[])
FPUTS(lnFile, [FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k])
FPUTS(lnFile, [FOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=%%i%%j%%k])
FPUTS(lnFile, [SET DBDUMP=%PRJDB%_%d%_%t%backup])
FPUTS(lnFile, [@ECHO OFF])
FPUTS(lnFile, [%PGPATH%pg_dump -h localhost -p 5432 -U postgres -F custom -E UTF8 %PRJDB% > %SVPATH%%DBDUMP%])
FPUTS(lnFile, [echo Backup Taken Complete %SVPATH%%DBDUMP%])
FCLOSE(lnFile)
ENDIF
ELSE
Cerror="Error, El Directorio Respaldo, No Fue Localizado."
ENDIF
ELSE
Cerror="Error, En La Version Del Postrgresql, No Fue Localizado."
ENDIF
ENDIF
IF INT(LEN(ALLTRIM(Cerror)))=0 AND FILE(FULLPATH(CURDIR())+ALLTRIM(UPPER(_SCREEN.obj_sysdatabasename))+[.BAT]) THEN
=esperate('.::. RESPALDANDO BASE DE DATOS, '+ALLTRIM(UPPER(_SCREEN.obj_sysdatabasename))+', POR FAVOR ESPERE UN MOMENTO.....')
oWsh=CREATEOBJECT("wscript.shell")
oWsh.Run(FULLPATH(CURDIR())+ALLTRIM(_SCREEN.obj_sysdatabasename)+[.BAT], 0, .T.)
RELEASE oWsh
WAIT CLEAR
ENDIF
RELEASE Cdrive
RETURN Cerror
ENDPROC
Yo pongo todo esto en un bat y lo ejecuto :
set pgpassword=xchasis
"C:\Program Files (x86)\PostgreSQL\9.3\bin\pg_dump" -i -h localhost -p 5432 -U postgres -F c -b -v -f "mibase.backup" BD_MIBASE
MK
IF INT(LEN(ALLTRIM(Cerror)))=0 AND FILE(FULLPATH(CURDIR())+ALLTRIM(UPPER(_SCREEN.obj_sysdatabasename))+[.BAT]) THEN