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.