Comando DOS no OnClick.
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.
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.
e
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 !!
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
Curtidas 0
Respostas
Ffabiop
18/05/2007
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
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
GOSTEI 0
Laelsonc
18/05/2007
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.
Alguem tenha algum aideia ou dica, ja to entrando no desespero..rsrs.
GOSTEI 0
Massuda
18/05/2007
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´.
GOSTEI 0
Laelsonc
18/05/2007
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 ?
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 ?
GOSTEI 0
Siam
18/05/2007
Tenta executar o WinExec com /k ao invés de /c e troque sw_show por sw_hide
GOSTEI 0
Carlos Bernardo
18/05/2007
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í....
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í....
GOSTEI 0
Massuda
18/05/2007
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......adapte o exemplo para gravar o resultado num arquivo ao invés de por num memo.
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) ;
GOSTEI 0
Laelsonc
18/05/2007
Nada ainda. O Exemplo do Siam q tinha pedido pra colocar com K gerou um arquivo com a linha a seguir abaixo:
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 !
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 !
GOSTEI 0
Laelsonc
18/05/2007
Ola rausch,
Cara seu exemplo tambem nao funcionou. Gera o arquivo vazio na unidade C.
Cara seu exemplo tambem nao funcionou. Gera o arquivo vazio na unidade C.
GOSTEI 0
Siam
18/05/2007
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
Tente utilizar cmd ao invés de command
GOSTEI 0
Laelsonc
18/05/2007
Nada. O Caso é serio... rsrs
GOSTEI 0
Siam
18/05/2007
Fiz um teste com o seguinte comando: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 ?
WinExec(´cmd /k dir c:\ /od > c:\dirorg.txt´, SW_Hide);
Será que vc não está errando em alguma coisa ?
GOSTEI 0
Laelsonc
18/05/2007
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 !
Resolveu o problema cara ! Valeu mesmo ! Vou passar pra um duzia de cabrinha que assim como eu estava atras dessa solução.
Obrigado !
GOSTEI 0