Página 1 de 1

RUN executando comando longo

Enviado: 30 Mar 2011 11:45
por fabiosfreire
Bom dia

Preciso executar uma aplicação que tem alguns parâmetros. Utilizamos o comando RUN, mas infelizmente ele não aceita todos os parâmetros. O comando está sendo executado até uma parte, o que me parece estar sendo respeitado algum limite.

Exemplo:

Código: Selecionar todos

RUN (C:\Pasta\Sub-pasta\Programa.exe Arquivo="C:\Pasta\12345678901234567890123456789012345678901234-procNFe.xml" E-mail="teste@dominioteste.com.br")
Antes que alguém diga que posso renomear o arquivo, logo adianto: O arquivo é uma nf-e, portanto não posso renomeá-lo.
Já colocamos o comando dentro de variáveis:

Código: Selecionar todos

xcomando := 'C:\Pasta\Sub-pasta\Programa.exe Arquivo="C:\Pasta\12345678901234567890123456789012345678901234-procNFe.xml" E-mail="teste@dominioteste.com.br"'
RUN (xcomando)
Mas o funcionamento é o mesmo, ou seja, deve existir algum limite no tamanho do comando passado.
Gostaria de saber se existe algum meio de executar comandos longos, seja pelo RUN ou qualquer outro comando.
Utilizo a lfnlib, mas não encontrei nada parecido nela.

Obrigado

Re: RUN executando comando longo

Enviado: 30 Mar 2011 12:16
por alxsts
Olá!

Seja bem-vindo ao Fórum!

Fiz o teste mostrado abaixo e verifiquei que, no Clipper, o comprimento máximo do parâmetro informado na linha de comando é 56 bytes. No xHarbour, digitei mais de 1500 bytes e aceitou normal...

Código: Selecionar todos

Function Main( xPar )

   cls

   Alert( xPar + Str( Len( xPar ) ) )

   RETURN NIL
Sugestão: mude sua aplicação para 32 bits, com Harbour ou xHarbour.

Re: RUN executando comando longo

Enviado: 30 Mar 2011 12:31
por Maligno
Um batch?

Re: RUN executando comando longo

Enviado: 30 Mar 2011 12:42
por alxsts
Olá!

Talvez fosse melhor ler estes parâmetros de uma tabela que talvez até já exista.

Re: RUN executando comando longo

Enviado: 30 Mar 2011 14:19
por fabiosfreire
Obrigado pelas respostas!
alxsts escreveu:Olá!

Seja bem-vindo ao Fórum!

Fiz o teste mostrado abaixo e verifiquei que, no Clipper, o comprimento máximo do parâmetro informado na linha de comando é 56 bytes. No xHarbour, digitei mais de 1500 bytes e aceitou normal...

Código: Selecionar todos

Function Main( xPar )

   cls

   Alert( xPar + Str( Len( xPar ) ) )

   RETURN NIL
Sugestão: mude sua aplicação para 32 bits, com Harbour ou xHarbour.
A idéia é, num futuro não muito distante, migrarmos. Mas no momento preciso resolver o problema no Clipper mesmo. Outras urgências envolvidas, espero que entenda.
alxsts escreveu:Olá!

Talvez fosse melhor ler estes parâmetros de uma tabela que talvez até já exista.
Não citei no post inicial, para poder explicar da forma mais sucinta possível, mas a princípio, temos todos os parâmetros gravados, e também não funciona.
Maligno escreveu:Um batch?
Vou testar esta alternativa e ver no que dá. Se resover, aviso aqui.

Abraço

RUN executando comando longo

Enviado: 30 Mar 2011 14:39
por Pablo César
Maligno escreveu:Um batch?
Vou testar esta alternativa e ver no que dá. Se resover, aviso aqui.
Não creio que venha a ter problemas executando através de uma batch. Eu fiz muito isso, criar uma batch que contenha caminhos ou parâmetros variáveis, a recomendação é essa e sem dúvidas irá funcionar se criar arquivo bat e executá-lo !

Re: RUN executando comando longo

Enviado: 31 Mar 2011 02:47
por rochinha
Amiguinho,

Só complementando a idéia dos amigos, crie toda a linha de comando e salve o conteudo em um arquivo .BAT pelo proprio clipper e depois execute-o via RUN.

Código: Selecionar todos

xcomando := 'C:\Pasta\Sub-pasta\Programa.exe Arquivo="C:\Pasta\12345678901234567890123456789012345678901234-procNFe.xml" E-mail="teste@dominioteste.com.br"'
memowrit( "EXECUTAR.BAT", xcomando )
RUN ("EXECUTAR.BAT")
Se transformar em função, terá:

Código: Selecionar todos

function NFeEnviarEmail( cChaveNFe, cEmailDestino )
xcomando := [C:\Pasta\Sub-pasta\Programa.exe Arquivo="C:\Pasta\]+cChaveNFe+[-procNFe.xml" E-mail="]+ cEmailDestino+["]
memowrit( "EXECUTAR.BAT", xcomando )
RUN ("EXECUTAR.BAT")