Página 1 de 1

duvida com run

Enviado: 27 Jul 2020 10:43
por andrelucass
ola a todos
uso o xharbour free versao 1.2.3 com postgresql, crio um arquivo .BAT para fazer a copia do banco de dados, só que quando vou usar o run ele não executa o arquivo .bat

Código: Selecionar todos

procedure backup
    local cSenha,cBanco,nPorta,cUsuario,cDestino
    
    cSenha := "00000000"
    cBanco := "xxxxxxxx"
    nPorta := 5432
    cUsuario := "postgres"
    cDestino := "e:\backup_sistema"

    nHandle=fcreate("backup.bat",0)

    fwrite(nHandle,"SET PGPASSWORD="+cSenha+hb_osnewline())
    fwrite(nHandle,"SET PGDATABASE="+cBanco+hb_osnewline())
    fwrite(nHandle,"SET PGPORT="+str(nPorta)+hb_osnewline())
    fwrite(nHandle,"SET PGUSER="+cUsuario+hb_osnewline())
    fwrite(nHandle,"SET DIRETORIO_BACKUP="+cDestino+hb_osnewline())
    fwrite(nHandle,[for /f "tokens=1,2,3,4 delims=/ " %%a in ('DATE /T') do set hoje=%%b%%c%%d]+hb_osnewline())
    fwrite(nHandle,"E:\ArquivosDeProgramas\PostgreSQL\9.5\bin\pg_dump --host=191.7.142.139 --format custom --blobs --verbose --file=%DIRETORIO_BACKUP%\bck_%time:~0,2%%time:~3,2%%date:~0,2%%hoje%.backup_postgresql"+hb_osnewline())
    run("backup.bat")
    return


duvida com run

Enviado: 27 Jul 2020 11:01
por Vlademiro
Tenta assim, pra obter algum retorno do que pode estar acontecendo

Código: Selecionar todos

IF FILE("backup.bat")
     RUN ( "backup.bat > run.log" )
ELSE
     ALERT("NAO ENCONTREI")
ENDIF

duvida com run

Enviado: 27 Jul 2020 11:04
por Vlademiro
Complementando

Eu uso o harbour, mas veja se tem que colocar o path do arquivo a ser chamado.

Código: Selecionar todos

cFileWithPath := hb_Dirbase() + "backp.bat"
RUN( cFileWithPath )
Não sei se funciona em xHarbour.

duvida com run

Enviado: 27 Jul 2020 13:17
por andrelucass
Vlademiro fiz os dois procedimentos, o primeiro o arquivo run.log foi criado mas esta fazio

duvida com run

Enviado: 27 Jul 2020 13:33
por Vlademiro
Teste o arquivo Bat criado. Acho que tem um erro nele, pois a pasta arquivos de programas não tem espaços.

O redirecionamento que havia lhe falado anteriormente deve ser feito na chamada do comando de backup, não no bat.

Coloque redirecionamento nos comandos dentro do bat.

Ex: pgdump seus parâmetros >> seulog.log

duvida com run

Enviado: 27 Jul 2020 13:34
por Vlademiro
Primeiramente gera o arquivo pelo seu programa, depois testa ele por fora.

duvida com run

Enviado: 27 Jul 2020 13:44
por rochinha
Amiguinhos,

andrelucass, o comando RUN assim como o acesso ao Prompt do MS-DOS são dependentes de nivel de usuário.

Ao criar os mapeamentos geralmente o fazemos via Administrador e algumas vezes o mesmo não é visualizado pelo usuário de instalação do Windows, apesar de se apresentar como "Administrador" ele não é o Administrador e portanto tem limites.

Se a rede é visivel via Prompt Administrador pode ser que o comando RUN esteja abrindo o Prompt do MS-DOS como um usuário sem nivel de acesso a rede compartilhada.

Exemplo:

Abra o Prompt do MS-DOS normalmente e também como Administrador. dê pings nos IPs, pule para os mapeamentos E:, Z: ou seja lá qual você criou em cada uma das telas e veja se enxergam.

Execute o Batch criado dentro das duas janelas e veja se correm corretamente.

Outro sim, você já pode gravar o conteúdo do Batch com variáveis de tempo e data já com os mesmos assinalados, ao invés de pegar via DOS usando %blablabla%.

Terminando, olhe o conteúdo do Batch para ver se tudo está sendo graado conforme sua programação.

E antes que eu esqueça: O comando FOR não funciona identicamente quando dentro de um Batch e diretamente no Prompt

duvida com run

Enviado: 27 Jul 2020 15:39
por andrelucass
Obrigado a todos

Descobrir o problema
o arquivo .bat eu crio com fcreate uso fwrite para gravar só que esqueci de usar fclose para fechar