none
ajuda com script IF RRS feed

  • Pergunta

  • Boa tarde Srs,

    Estou a tarde toda, tentando fazer um script que:

    remotamente, pegue a versao do sistema operacional e faça tal coisa..

    estou usando o PsInfo para isso.. segui desta forma..

    @echo off

    psinfo \\computador |find "XP" > /null

    if %ERRORLEVER%==0 goto xp

    goto vista

    :xp

    echo XP

    :vista

    echo Vista

    exit

    tentei assim também..

    @echo off

    psinfo \\computador |find "XP" > /null

    goto %ERRORLEVEL%
    :1
    goto vista
    :0
    goto xp

    eh algo simples, mas sei la porq nao funciona..

    se alguem tiver outra maneira de ajudar, ou indicar onde erro, agradeço :)

    segunda-feira, 2 de agosto de 2010 20:08

Respostas

  • Tente assim.

    @echo off

    psinfo \\computador |find "XP"

    if %ERRORLEVEL%==0 (goto xp) else (goto vista)

    :xp
    echo XP
    goto end

    :vista
    echo Vista

    :end

    Só que caso ocorra algum erro como a máquina fora da rede a mesagem será vista.

     

    Qualquer dúvida poste.

     

    Abraço


    Gabriel Nascimento MCP / MCTS / MCSA / MCSE / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    • Marcado como Resposta dimago quarta-feira, 4 de agosto de 2010 02:56
    segunda-feira, 2 de agosto de 2010 23:18

Todas as Respostas

  • Tente assim.

    @echo off

    psinfo \\computador |find "XP"

    if %ERRORLEVEL%==0 (goto xp) else (goto vista)

    :xp
    echo XP
    goto end

    :vista
    echo Vista

    :end

    Só que caso ocorra algum erro como a máquina fora da rede a mesagem será vista.

     

    Qualquer dúvida poste.

     

    Abraço


    Gabriel Nascimento MCP / MCTS / MCSA / MCSE / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    • Marcado como Resposta dimago quarta-feira, 4 de agosto de 2010 02:56
    segunda-feira, 2 de agosto de 2010 23:18
  • Boa Gabriel, certinho..

    errei apenas ali no else entao??? pq em outros scripts nunca usei o else para fazer o se nao, eh uma particularidade do errorlevel serah?

    pergunto pq nao basta fazer, tem q entender neh :)

    sobre a maquina fora da rede voce tem razao.. pensei em algo como isso..

    @echo off

    :: set pc=%1

    PsInfo.exe \\%1 |find "XP" >null
    if %ERRORLEVEL%==0 (goto xp) else (goto testa)

    :xp
    @echo.
    echo XP
    goto fim

    :testa
    PsInfo.exe \\%1 |find "Vista" >null
    if %ERRORLEVEL%==0 (goto vista) else (goto fim)

    :vista
    @echo.
    echo Vista
    goto fim

    :fim

    pode ser? o que acha? dou uma volta a mais, se for Vista, porem, me resolve...

    podia fazer um ping, so que pode ocorrer de eu nao conseguir chegar na maquina remotamente, entao, pensei que dessa maneira seria melhor...

    ai, se tiver mais ideia :)

     

    abs e obrigado..

    terça-feira, 3 de agosto de 2010 11:34
  • Isso ai...Tem que entender.

    Isso não é uma particularidade do errorlevel não, o que acontece é que você tava checando o IF e se fosse XP fazia um GOTO para :XP só que do XP vc não estava pulando para o FIM, com isso sempre executava o :VISTA. O Else você pode usar sempre junto com IF.

    Ótima solução, você já penou em fazer isso em VBS?

    Qualquer dúvida poste.

    Abraço.


    Gabriel Nascimento MCP / MCTS / MCSA / MCSE / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    terça-feira, 3 de agosto de 2010 13:09
  • hum que coisa.. pelo que lembro mesmo quando era Vista ele fazia o XP.. mas enfim.. vou tentar sempre usar o else ali nesse seu modelo..

    cara, sobre o vbs, penso que nem precisaria do psinfo, certo???? e seria mais rapido até..

    soh que, nao tenho nehuma habilidade com vbs...

    soh que se for mais rapido, ai vou correr atrás..

    se tiveres algum material bom que eu possa estudar e entender, fico agradecido..

     

    absss

     

    terça-feira, 3 de agosto de 2010 17:15
  • Como você pretende fazer esse controle?

    Vai salvar isso em TXT, vai querer gravar em um banco de dados?

    Só pra eu entender melhor, ai posso até fazer um script pra vc e comentar bem detalhado as linhas pra vc entender.

    Abraço.


    Gabriel Nascimento MCP / MCTS / MCSA / MCSE / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    quarta-feira, 4 de agosto de 2010 00:46
  • Opaa, boa noite akee

    entao, penso que ele pode me jogar isso num txt, as maquinas que deram certas e as erradas, pra eu saber o q foi feito..

    bom.. ai, jah vou abusar, butttt, seria bem legal um laço for ai neh? pq ai mando ele ler dum arquivo com os IPs das máquinas...

    se tu souberes fazer esse for tmb ali no meu .bat seria legal.. eu usei uma vez, mas eram dois arquivo, o primeiro tinha o for, q chamava o outro bat com as instruções, nao sei se tah certo, se pode ser tudo num .bat soh..

    Obrigado Gabriel pela ajuda ai kra.. :)

    abss

    quarta-feira, 4 de agosto de 2010 02:56
  • Diego,

    Utilize o comando abaixo para chamar sua bat, lembrando que seu arquivo deve conter o nome de um computador por linha.

    for /F "tokens=*" %i IN (C:\computadores.txt) Do suabat.bat %i

    Qualquer dúvida poste.

    Abraço.


    Gabriel Nascimento MCP / MCTS / MCSA / MCSE / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    quarta-feira, 4 de agosto de 2010 15:28