none
Problemas com váriáveis no prompt. RRS feed

  • Pergunta

  • Ola pessoal, estou tentando adicionar um usuário como administrador de uma estação via prompt de comando, estou usando como auxiliar o psexec para rodar uma bat na estação do usuário.
    Quando eu coloco o o login do usuário direto na BAT, funciona, mas quero fazer de uma forma que quando eu execute, me pergunte qual o nome do usuário, e coloque a informação digitada no grupo.. eis abaixo como estou fazendo:
    Teste1.bat:
    :inicio
    set nome=""
    echo Digite o nome da maquina:
    set /p "nomemaquina="
    copy C:\Documents and Settings\mikhailjhnDesktop\teste2.bat\\%nomemaquina%\c$\windows\system32\
    copy "C:\Documents and Settings\mikhailjhn\Desktop\teste2.bat"  \\%nomemaquina%\c$
    psexec \\%nomemaquina%  "c:\teste2.bat"

    Teste2.bat:

    @echo off
    set log=""
    echo Digite o login
    set /p "log="
    echo.
    net localgroup "Administradores" "%log%" /add

    Até aqui.. tudo bem, se eu rodar e digitar o nome do usuário na minha máquina funciona.. mas quando o prompt aberto é o da máquina de destino, gera o seguinte erro:
    PsExec v1.72 - Execute processes remotely
    Copyright (C) 2001-2006 Mark Russinovich
    Sysinternals - www.sysinternals.com


    Digite o login
    p000000

    Não existe o usuário ou grupo global: p.

    Para obter mais ajuda, digite NET HELPMSG 3783.

    Consegui detectar que a variável não esta salvando a palavra inteira, somente a primeira letra.
    gostaria de uma ajuda para corrigir isso...
    Obrigado!

    segunda-feira, 26 de outubro de 2009 19:56

Todas as Respostas

  • Ola Leandro!

    Cara.. não é este o problema.. a dificuldade que estou tendo é.. na hora de efetuar a leitura e armazenamento do login em uma váriável para usar depois, esta gerando erro.. não guarda o login inteiro, somente o primeiro caracter...
    O código esta assim:
    echo off
    set log=""
    echo Digite o login
    set /p "log="
    echo.
    net localgroup "Administradores" "%log%" /add

    mas quando executo o psexec cmd para a máquina de destino, a váriavel nao guarda o login inteiro. fica assim

    Digite o login:
    mikhailjhn

    ok.. entrei com o usuário, mas na hora de validar gera a mensagem:
    Não existe o usuário ou grupo global: m.

    ou seja.. o resto da palavra foi ignorado, gostaria de um auxílio para corrigir isso..
    terça-feira, 27 de outubro de 2009 11:17
  • Olá,

                Tente fazer dessa forma.

    echo off
    set log=""
    echo Digite o login
    set /p log=
    echo.
    net localgroup "Administradores" "%log%" /add


    Espero ter ajudado.
    Se útil, classifique.

    Leonardo Sousa
    sexta-feira, 30 de outubro de 2009 10:26
  • No seu script tente colocar %% ao invez de uma só!

    []


    Erick Albuquerque
    sexta-feira, 30 de outubro de 2009 11:56
  • Mesmo erro...
    sexta-feira, 30 de outubro de 2009 13:09
  • Tentei assim:
    net localgroup "Administradores" "%%log%" /add
    net localgroup "Administradores" "%%log%%" /add
    net localgroup "Administradores" "%log%%" /add

    Nenhum funciona, gera erro que ao valor não existe.
    sexta-feira, 30 de outubro de 2009 13:10
  • Tente usar o psexec com os parametros abaixos. Coloque os dois arquivos bat na mesma pasta.

    set nome=""
    echo Digite o nome da maquina:
    set /p "nomemaquina="
    psexec \\%nomemaquina% -c -f -w c:\teste2.bat

    Leonardo Sousa
    quarta-feira, 4 de novembro de 2009 11:50
  • set nome=""
    echo Digite o nome da maquina:
    set /p "nomemaquina="
    copy C:\Documents and Settings\mikhailjhnDesktop\teste2.bat\\%nomemaquina%\c$\windows\system32\
    copy "C:\Documents and Settings\mikhailjhn\Desktop\teste2.bat"  \\%nomemaquina%\c$
    psexec \\%nomemaquina% -c -f -w  "c:\teste2.bat"

    Gera erro de sintaxe utilizando estes parametros... nao xega nem a rodar a teste2.bat.

    quarta-feira, 4 de novembro de 2009 12:59