Página 1 de 2
Obter data e hora do servidor
Enviado: 11 Nov 2008 20:35
por alxsts
Olá amigos!
Por favor, será que alguem pode me dar uma dica para resolver a questão abaixo? Antecipadamente agradeço.
Estou dando manutenção em uma aplicação muito antiga (que novidade...), que precisa continuar sendo gerada com rtLink.
Preciso buscar a data e hora em um servidor.
Estou usando o seguinte comando: RUN "CMD /C START /MIN /WAIT NET TIME \\Server02 > NULL"
Na execução, o arquivo NULL é criado mas parece que não é fechado (dando um dir, aparece com tamanho zero)
Alguma idéia?
Abraços
Obter data e hora do servidor
Enviado: 11 Nov 2008 21:24
por Maligno
Nome estrano para um arquivo. Até dá a impressão de que você quer anular a saída do comando no vídeo, coisa que funcionaria se fosse NUL e não NULL. Troque o nome do arquivo. De repente funciona. Eu testei aqui e não ficou zero. Mas usei em linha de comando: "DIR > NULL".
Obter data e hora do servidor
Enviado: 12 Nov 2008 10:47
por Pablo César
Eu acho que não trata-se de direcionamento para arquivo, muito menos por causa do NULL ou NUL. Isto é perfeitamente possível em Clipper, diferente ao padrão da linguagem C. Fiz alguns testes e de fato não funciona de dentro da aplicação Clipper, deve ser por causa da "emulação" ao executar o RUN. Fiz testes:
RUN "CMD /C START /MIN /WAIT NET TIME \\Server02 > NULO"
RUN "START /MIN /WAIT NET TIME \\Server02 > NULO"
RUN "NET TIME \\Server02 > NULO"
E nenhum dos casos funcionou. Eu utilizo este recurso de obter ou até mesmo sincronizar a data e hora do servidor, mas executo isso na minha BATCH que chama a minha aplicação. Talvez seja conveniente você executar esse comando antes de entrar no seu aplicativo. Faça um arequivo .BAT que direcione para um arquivo TXT e depois faça chamada do seu aplicativo logo a seguir.
Obter data e hora do servidor
Enviado: 12 Nov 2008 11:23
por Maligno
Em C o NULL (dois L) só existe para ilustrar o valor zero. Não tem nada a ver com redirecionamento, que é um recurso apenas da linha de comando. E o NUL (um L) é diferente do NULL. O primeiro força o descarte da saída padrão no DOS, mas NULL é um nome válido de arquivo. No caso do exemplo postado pelo colega é um redirecionamento perfeitamente válido. É só testar no prompt do DOS algo do tipo: DIR > NULL. O arquivo NULL estará lá. O que parece também encrencar um pouco é o comando START. Precisa?
Talvez o problema esteja no tipo de saída de NET, que parece não imprimir para a saída padrão (stdout). Se for isso mesmo, não será possível redirecionar a saída para um arquivo. É fácil ver. Basta trocar o comando por MODE, por exemplo. Se for executado SwpRunCmd("CMD /C MODE > NULL"), o arquivo NULL estará lá com o saída correta.
Obter data e hora do servidor
Enviado: 12 Nov 2008 11:42
por Pablo César
NULL é um nome válido de arquivo. No caso do exemplo postado pelo colega é um redirecionamento perfeitamente válido. É só testar no prompt do DOS algo do tipo: DIR > NULL.
Pois é, é valido assim como NUL é válido como arquivo também. Na verdade falei em Clipper mas para o SO é que na verdade válido como nome de arquivo.
parece também encrencar um pouco é o comando START. Precisa?
Também acho que não haveria necessidade assim como o comando CMD, não acha ?
Talvez o problema esteja no tipo de saída de NET, que parece não imprimir para a saída padrão (stdout)./quote]Acho que não deve ser isso, pois se fizermos um teste na linha de comando direcionado para arquivo, o NET TIME cria sim com o conteúdo de data e hora do computador remoto.
Re: Obter data e hora do servidor
Enviado: 12 Nov 2008 12:43
por alxsts
Caros, obrigado pelas respostas.
Estou usando CMD /C START pois preciso linkeditar com rtLink. De outra forma usaria o Blinker e SwpRunCmd(). Vou continuar tentando...
[]s
AlxSts
Re: Obter data e hora do servidor
Enviado: 12 Nov 2008 13:09
por Maligno
Pablo César escreveu:Pois é, é valido assim como NUL é válido como arquivo também.
Não. No prompt do DOS o argumento NUL serve apenas e tão somente para descartar a saída do
pipe gerado por um programa. Em virtude disso, no DOS nenhum arquivo pode se chamar NUL.
Acho que não deve ser isso, pois se fizermos um teste na linha de comando direcionado para arquivo, o NET TIME cria sim com o conteúdo de data e hora do computador remoto.
Eu disse porque fiz um teste bem simples. Usei o comando de linha
NET /? > SAIDA, mas foi gerado o arquivo SAIDA com tamanho zero. Em vista disso, supus que esse comando não usa a saída padrão. Logo, não há como redirecionar a saída desse comando. Mas, estranhamente (testei agora), o comando
NET HELP TIME > SAIDA gera o arquivo SAIDA corretamente. Muito esquisito. Parece que, dependendo do comando utilizado, a saída é para stdout, como normalmente se espera. Mas em alguns comandos não.
Re: Obter data e hora do servidor
Enviado: 12 Nov 2008 17:25
por Pablo César
Maligno escreveu:Pablo César escreveu:Pois é, é valido assim como NUL é válido como arquivo também.
Não. No prompt do DOS o argumento NUL serve apenas e tão somente para descartar a saída do
pipe gerado por um programa. Em virtude disso, no DOS nenhum arquivo pode se chamar NUL.
Tem razão Maligno ! Eu me confundí, de fato não é possível criar arquivo chamado NUL pelo SO.
AlxSts escreveu:Estou usando CMD /C START pois preciso linkeditar com rtLink
Independente se usas RTLINK ou BLINKER, na minha opinião: estariam demais. Mas mesmo assim não irá resolver, caso vier tentar executar o NET TIME de dentro da aplicação Clipper. Tente através da batch e veja como é possível, desta forma:
1. Crie um arquivo VESERVER.BAT com o seguinte conteúdo: @NET TIME \\Server02 > DATAHORA.TXT
2. Na sua aplicação, em vez de chamar:
RUN "CMD /C START /MIN /WAIT NET TIME \\Server02 > NULL" coloque então:
RUN VESERVER.BAT
Se a sua intenção gravar a data e hora do Server02, então é só executar. Caso deseje exibir na tela, leia o conteúdo do arquivo DATAHORA.TXT para uma variável e só mostrar.
Agora, não sei explicar o por quê não funciona o comando de dentro da aplicação Clipper. Funcionou através da BATCH. Vai entender ?
Re: Obter data e hora do servidor
Enviado: 12 Nov 2008 17:34
por Maligno
Aliás, em tempo: se para o colega servir a data/hora de um servidor HTML da Internet, ele poderia muito bem usar a biblioteca WAPI, que dispõe de recursos suficientes para executar um script PHP para obter esses dados, conforme exemplo que já postei antes. Se uma conexão à Internet estiver disponível, claro.
Re: Obter data e hora do servidor
Enviado: 12 Nov 2008 18:47
por alaminojunior
Eu fiz uns testes aqui, e dentro do programa não funcionou, mas fora sim. Acredito que seja a variável path, pois ele retornou "comando ou nome de arquivo inválido....."
Obter data e hora do servidor
Enviado: 12 Nov 2008 18:56
por Pablo César
Pois... mesmo colocando o path completo não dá certo. O NET.EXE está no C:\WINDOWS\SYSTEM32 e mesmo asso não deu. Acho que tem a ver com a emulação DOS. Tem coisas que não funcionam de dentro da aplicação Clipper.
Re: Obter data e hora do servidor
Enviado: 12 Nov 2008 18:58
por Maligno
Testei o NET dentro de um programa e deu certo. Melhor chamar o House.

Obter data e hora do servidor
Enviado: 12 Nov 2008 19:00
por Pablo César
Conta como você conseguiu Maligno. Não diga que fez em C ?
Re: Obter data e hora do servidor
Enviado: 12 Nov 2008 19:05
por Maligno
Simples de tudo:
SwpRunCmd("CMD /C NET HELP TIME > NULL").

Obter data e hora do servidor
Enviado: 12 Nov 2008 19:34
por Pablo César
Ahhh com BLINKER, Maligno ? Mas o ALXsts precisa solução para RTLINK...
Será falta de memória ? Por quê com BLINKER funcionou e com RTLINK não
