Página 1 de 1

VERSAO DO SIST.OPER ?

Enviado: 04 Out 2005 12:31
por managercorp
ANTIGAMENTE SE COLOCAVA
@ 10,10 SAY OS()
E O CLIPPER DIZIA EX: DOS 5.0
QUE ERA O QUE SE VIA NO RESULTADO DO COMANDO (VER)
PELO PROMPT DO DOS

HOJE OS SISTEMAS BASICAMENTE SO MOSTRAM DOIS RESULTADOS
NO CASO DO WINDOWS 98
WINDOWS 98 [VERSAO.........
NO CASO DO XP
MICROSOFT WINDOWS XP..........

SO QUE O RETORNO DO COMANDO OS()
CONTINUA SENDO DOS 5.00 OU DOS 7.00
COMO FACO PARA GUARDAR O RESULTADO DO COMANDO VER
DO PROMPT DO DOS EM UMA VARIAVEL NO CLIPPER

EX:
SE O RESULTADO DE VER E WINDOWS 98
ENTAO MINHA VARIAVEL SISTEMAOP='WINDOWS 98'

PELO OS() SO APARECE DOS 5.00, ASSIM SENDO NAO SEI COMO IDENTIFICAR SE A ESTACAO E 98 OU XP

ALGUEM PODE ME AJUDAR
POIS TENHO ROTINAS QUE FUNCIONAM COM UM COMANDO NO 98 E COM OUTRO NO XP, E O SISTEMA DE SABER AUTOMATICAMENTE QUAL CHAMADA VAI FAZER.

NAO ADIANTA PEDIR PRA MIM COLOCAR UMA VARIAVEL NO AUTOEXEC.BAT TIPO ASSIM SISTEMA='XP', POIS NAO ADIANTA, MEUS CLIENTES TEM BASES COM 45 ESTACOES E NAO POSSO IR EM CADA UMA ALTERANDO O AUTOEXEC.
TEM DE SER AUTOMATICO QUANDO EU BAIXAR O NOVO EXE.

AGRADECO QUEM ME AJUDAR....

Eu mesmo Resolvi

Enviado: 04 Out 2005 16:03
por managercorp
ja que ninguem desenrolou essa, eu mesmo arranjei um jeito
vou citar abaixo a solucao, possa ser que sirva para alguem:

VSISTEMAO='XP'
IF .NOT. FILE("C:\WINDOWS\SYSTEM32\WIN.COM")
VSISTEMAO='98'
ENDIF
IF VSISTEMAO='XP'
! CMD /C START /MAX /high WORDVIEW.EXE teste.doc
ENDIF
IF VSISTEMAO='98'
RUN START /MAX WORDVIEW.EXE teste.doc
ENDIF

Enviado: 04 Out 2005 18:00
por lima
Olá

Voce pode testar a variavel de ambiente, ex:-
ComanXp:= ''
IF AT('NT', GETENV('OS') ) > 0
ComanXp:= 'cmd /c start /High '
END

Até +
Lima

Enviado: 05 Out 2005 07:37
por Visitante
Alexandre...

O ideal é você usar a forma como o lima falou, analisando a variável de sistema OS com a função GetEnv, se for XP/2000 ela vai retornar Windows_NT.

A forma como você tem feito poderá te trazer problemas quando você se deparar com algum windows xp que não foi instalado na pasta C:\Windows.

Um Clip Abraço

Enviado: 06 Out 2005 16:51
por Clipper
Só um probleminha...

Tentando descobrir um meio de ajudar o alexandre tentei a opção do GETENV("OS") porém não retorna nada, reparei que o mesmo acontece com todas as variaveis de ambiente criadas pelo windows XP, quando são variaveis criadas pelo usuário retorna beleza.

Outra coisa que tentei (e que me deixou com mais raiva do XP) foi capturar a saida do comando VER, observem que se executo o comando VER direto no DOS ele retorna o nome do Windows (XP/2000/98), porem se coloco o seguite comando dentro do programa RUN VER >SO.TXT, quando vou ver dentro do SO.TXT só tem MS-DOS versao 5.00.500 - Vai entender uma p... dessas ?

Até logo.

Marcelo

Foi isto mesmo

Enviado: 06 Out 2005 19:36
por managercorp
Foi isto mesmo que detectei Marcelo
por enquanto vou fazendo do meu jeito como falei acima
se na pasta windows\system32 tem o arquivo win.com
e porque e xp ou nt.
e assim vamos levando. gostei do Marcelo, viu e foi atras pra ter certeza, tambem sou assim, valeu Marcelo.

Enviado: 07 Out 2005 09:42
por Visitante
Lamento ter que opinar o contrário Marcelo e Alexandre...

Eu achei um absurdo o que vocês escreveram e resolvi fazer o teste.

Criei um prgzinho Chulo, com apenas isso:

csistema:=Getenv("OS")
? csistema

compilei e rodei

apareceu na minha tela:

Windows_NT

Acho que o problema deve estar com o Windows de vocês.

Meu windows xp é:
Versão 5.1 compilação 2600.xpsp2_sp2_gdr.050301-1519: Service Pack 2

Verifiquem o windows de vocês, pois no meu funcionou direitinho.
Eu apenas achei estranho, pois em alguns programas meus eu utilizo a variável criada pelo xp "SYSTEMROOT" que devolve a pasta onde está instalado o Windows e nunca tive problema.

Um Clip Abraço

Enviado: 07 Out 2005 21:10
por trapezus
Caro Alexandre

A opção do Marcus é a mais acertada. Tentei o exemplo que ele passou aqui no fórum e deu certíssimo.

Convêm testar em seus programas.

Trapezus :xau

Enviado: 07 Out 2005 21:42
por trapezus
Em complemento à resposta anterior.

Pensando em estabelecer o ambiente de trabalho, cheguei à seguinte solução.

Não sei se é a mais correta porém pode ser útil com algumas alterações.

Código: Selecionar todos

run ver >> os.txt
   var:= memoread("os.txt")
   for x:= 1 to Len(Trim(var))
      do case
      case SubStr(var, x, 10) = "Microsoft "
         if (SubStr(var, x+10, 10) = "Windows XP")
            op:= "XP"
         elseif (SubStr(var, x+10, 10) = "Windows 98")
            op:= "98"
         else
            op:= "MSDOS"
         endif
         exit
      endcase
   next
run del os.txt
Um Abraço

Enviado: 08 Out 2005 00:35
por Dudu_XBase
Boa noite Galera.
Vcs tbm podem fazer assim.
Existem duas funções da Oslib que unidas retornam a versão do DOS:
* OL_OsVerMaj()
* OL_OsVerMin()

? alltrim( str( OL_OsVerMaj() ) ) + "." + ;
alltrim( str( OL_OsVerMin() ) )


Versões Retornadas com o Sistema Operacional

Código: Selecionar todos

95               DOS 7.0
95 OSR 2.5  DOS 7.10
98               DOS 7.07
98SE           DOS 7.10
ME              DOS 8.0
NT4             DOS 5.00
2000            DOS 5.00
XP               DOS 5.00 
// Ultima versão da Oslib criada pelo Dave Pearson
http://www.davep.org/clipper/oslib106.zip

Já no xharbour vc pode usar essas funções para pegar a versão do SO.
os_iswinnt
os_iswin95
os_iswin98
os_iswinme
os_iswinnt351
os_iswinnt4
os_iswin2000
os_iswinxp
os_iswin2003
os_iswtsclient
os_versioninfo

Criei esse exe em xharbour para exemplificar
http://geocities.yahoo.com.br/dudu_xbase/version.zip

ele tb atualiza a variavel de Ambiente OS utilizada pelo Lizander.