GARANTIR DESCONTO

Fórum Comando DOS no OnClick. #341963

18/05/2007

0

Ola pessoal. Bom ja lancei essa pergunta outras vezes mas nao obtive resposta. Talvez por nao ter explicado bem. Mas fiz um resuminho e o negocio parece ser simples, mas comigo nao funciona.

To tentando fazer um bakcup da minha base Mysql pelo Deplhi. Uso o seguinte comando no Prompt-DOS.

mysqldump -h localhost -u root --passsword=senha --databases minhatabela > c:\backup.sql


Funciona blz. O aplicativo mysqldump ja esta no Path e so preciso passar isso ai mesmo. To tentando jogar isso num onclick de um botão no Delphi. Tentei das seguintes formas.

ShellExecute(0,nil,Pchar(´mysqldump´), PChar(´ -h localhost -u root --passsword=senha --databases minhatabela > c:\kariri_backup.sql´), nil, sw_show);


e

WinExec(´mysqldump -h localhost -u root --passsword=senha --databases minhatabela > c:\backup.sql´,sw_show);


E não retorna nada. O Shellexecute ate abre uma janelinha de prompt mas nao salva o arquivo SQL. Alguem poderia me ajudar. Explicando como funciona esses comando WinExe e Shell Execute. Talvez nao esteja entendendo bem. Valeu Galera !!


Laelsonc

Laelsonc

Responder

Posts

18/05/2007

Ffabiop

Bom dia,

Estes dias achei o seguinte:

WinExec(´command.com /c mysqldump -h localhost -u root --passsword=senha --databases minhatabela > c:\backup.sql´,sw_show);

Parece funcionar bem, faz um teste aí e conta pra gente

fábio


Responder

Gostei + 0

18/05/2007

Laelsonc

Cara...quando executo isso ai abre uma janela do DOS e gera o arquivo sql na unidade C. So que o arquivo vem vazio, sem nenhuma linha se quer.
Alguem tenha algum aideia ou dica, ja to entrando no desespero..rsrs.


Responder

Gostei + 0

18/05/2007

Massuda

A solução mais simples é colocar seu comando num arquivo .bat e executar o .bat via WinExec(). Para evitar a janela dos, passe para o WinExec() uma linha de comando assim ´start MeuBat.bat´.


Responder

Gostei + 0

18/05/2007

Laelsonc

Ola Amigos,
MAssuda o lance do Bat é que minha senha e usuario irao ficar em evidencia, nego esperto pode abrir e ver.
Porque sera q com os comandos q passo acima nao funciona ?


Responder

Gostei + 0

18/05/2007

Siam

Tenta executar o WinExec com /k ao invés de /c e troque sw_show por sw_hide


Responder

Gostei + 0

18/05/2007

Carlos Bernardo

Tenta assim :
var executa:string;

executa := ´command.com /c mysqldump -h localhost -u root --passsword=senha --databases minhatabela > c:\backup.sql´;

winexec(PChar(Executa),1);

Tenta aí....


Responder

Gostei + 0

18/05/2007

Massuda

O problema é o ´> c:\backup.sql´ na sua linha de comando. Esse redirecionamento da saída não é suportado pelo WinExec nem pelo ShellExecute.

Use o exemplo deste artigo...

:arrow: [url=http://delphi.about.com/cs/adptips2001/a/bltip0201_2.htm]Capture the output from a DOS (command/console) Window[/url]

...do site delphi.about.com para capturar a saída do mysqldump; no seu cas, ficaria algo assim...
RunDosInMemo(´mysqldump -h localhost -u root --passsword=senha --databases minhatabela ´, Memo1) ;
...adapte o exemplo para gravar o resultado num arquivo ao invés de por num memo.


Responder

Gostei + 0

19/05/2007

Laelsonc

Nada ainda. O Exemplo do Siam q tinha pedido pra colocar com K gerou um arquivo com a linha a seguir abaixo:

C:\ARQUIV~1\BORLAND\DELPHI7\PROJECTS>


E o lance do Massuda não gerou nada. A aplicação travou e nao jogou nada dentro do Memo.

O Massuda falou faz sentido, quando a saida de dados do DOS. Creio esta ai o caminho a pesquisar.
Ate que sei alternativas para o backup do mysql. Mas pelo Dump é uma mão na roda pelas opcoes que ele tras, e nao quero acreditar que nao exista uma solução para rodar um scriptiznho DOS simples de dentro do Delphi.

E ai Massuda, galerinha me ajuda !


Responder

Gostei + 0

19/05/2007

Laelsonc

Ola rausch,
Cara seu exemplo tambem nao funcionou. Gera o arquivo vazio na unidade C.


Responder

Gostei + 0

20/05/2007

Siam

Não tenho certeza, mas pode ser que o command.com utilize a velha nomenclatura 8.3 e se for isso ele não está reconhecendo [b:ea2d968f5b]mysqldump[/b:ea2d968f5b] por ter 9 letras.

Tente utilizar cmd ao invés de command


Responder

Gostei + 0

21/05/2007

Laelsonc

Nada. O Caso é serio... rsrs


Responder

Gostei + 0

21/05/2007

Siam

Fiz um teste com o seguinte comando:
  WinExec(´cmd /k dir c:\ /od > c:\dirorg.txt´, SW_Hide);
Não abriu janela e gerou o dirorg.txt em ordem de data. Então o cmd /k aceita o comando com parâmetros.
Será que vc não está errando em alguma coisa ?


Responder

Gostei + 0

21/05/2007

Laelsonc

YES !! YES !!! YES !!!
Resolveu o problema cara ! Valeu mesmo ! Vou passar pra um duzia de cabrinha que assim como eu estava atras dessa solução.

Obrigado !


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar