none
passar meus scripts de bat para VBS RRS feed

  • Pergunta

  • ja migrei quase todas as funções do meus scripts bat para VBS, mais há duas funções que eu ainda nao consegui por em VBS. são:

    if exist "c:\pasta1\pasta2" xcopy \\srv1\pasta1\pasta2\arquivo.exe "c:\pasta1\pasta2" /d /h /r /i /y

    a outra é que eu tenho usuários que se movem com grande frequencia entre minhas filiais as quais são dominios filhos, eu criei um script em bat com um sistema de decisão que capta qual rede o usuário está e roda o script de qual filial ele se logou.

    ipconfig | find /v "Gateway" | find /i "10.10.5"
    if %errorlevel% EQU 0 goto REDE_10.10.5

    REDE_10.10.5
    \\10.10.5.10\netlogon\user.bat
    GOTO EOF

    há como eu por essas duas funções no meu script VBS .

    OBS. essa segunda é um script separado...

    desde já Grato.

    quarta-feira, 6 de dezembro de 2006 17:50

Respostas

  • Tem uma solução bem melhor e mais rápida que usar o comando CMD /C com o Copy pra executar comandos... usando ferramentas nativas do WSH. Aliás, usar CMD /C dá na mesma que continuar com BAT... não tem ganho nenhum.

    Set FSO = CreateObject("Scripting.FilesystemObject")
    If FSO.FolderExists("c:\pasta") then
        FSO.CopyFolder "origem", "destino"
    End if


    []s,


    --
    Vinicius Canto <scripterbr_at_gmail_dot_com>
    MVP Visual Developer - Scripting
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Blog sobre Scripting: http://viniciuscanto.blogspot.com

    • Sugerido como Resposta Douglas Tesch sexta-feira, 18 de setembro de 2009 19:04
    • Marcado como Resposta Fábio JrModerator sábado, 3 de dezembro de 2011 21:11
    sexta-feira, 15 de dezembro de 2006 19:58
    Moderador

Todas as Respostas

  •  

    Para o caso da cópia daria um pouco de trabalho fazer o mesmo em vbs por causa da opção /d você pode utilizar o método Run do objeto Shell:

    set WshShell = CreateObject("Wscript.Shell")
    WshShell.Run "cmd /C if exist ""c:\pasta1\pasta2"" xcopy
    \\srv1\pasta1\pasta2\arquivo.exe ""c:\pasta1\pasta2"" /d /h /r /i /y",0

    Observações:

    1- Repare que inclui no comando o cmd(abre o prompt) com a opção /C (para encerrar após o comando);

    2-Como o comando fica dentro de uma string utilize ""(duas aspas seguidas) dentro da string.

    3- No final tem um "0" significa que não vai ser mostrada a janela .

     

    Sobre a questão das filiais, acho que aqui no fórum eu já postei algo sobre isso, vou procurar e posto aqui.

    Só algumas perguntas:

    -Cada localidade é um site diferente?

    -Cada localidade é um subdominio diferente?

    • Sugerido como Resposta Douglas Tesch sexta-feira, 18 de setembro de 2009 19:03
    quinta-feira, 7 de dezembro de 2006 15:48
    Moderador
  •  

    O script abaixo verifica o Default Gateway para fazer a distinção de localidade, mas perguntei sobre sites e subdominios porque talvez tenha uma maneira mais fácil de fazer isto.

    strComputer="."

    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colAdapters = objWMIService.ExecQuery _
        ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

    Gateways=""
    For Each objAdapter in colAdapters
      If Not IsNull(objAdapter.DefaultIPGateway) Then
          For i = 0 To UBound(objAdapter.DefaultIPGateway)
             Gateways = Gateways & Trim(objAdapter.DefaultIPGateway(i)) & ";"
          Next
       End If
    Next

    wscript.echo Gateways

    Select case TRUE
     Case instr(Gateways,"10.10.5")>0
      wscript.echo "<procedimentos para a rede que tem o gateway começando por 10.10.5>"
      

     Case instr(Gateways,"192.168.1")>0
      wscript.echo "<procedimentos para a rede que tem o gateway começando por 192.168.1>"

     Case else
      wscript.echo "else"
    end Select

     

    quinta-feira, 7 de dezembro de 2006 19:58
    Moderador
  • as filias são subdominios ou seja são parte de uma arvore de dominio mais estão no mesmo site..

    tipo dominio pai (xyz.com) filho (asd.xyz.com) e assim por diante !

    eu vou testar esse seu script... mais como vc disse que poderia haver algo mais facil eu to respondendo !!!

    segunda-feira, 11 de dezembro de 2006 19:42
  • O mesmo script só que ao invés de pegar o default gateway ele faz referência ao (sub)dominio onde está.

     

    Set objSysInfo = CreateObject("ADSystemInfo")
    Select case lcase(objSysInfo.DomainDNSName) 'Esta propriedade traz o nome do dominio na forma xx.com.br, e formatado para minusculo com a função LCASE
      Case "dominio.com.br"
      wscript.echo "<procedimentos para dominio dominio.com.br>"

     Case "seu.dominio.com.br"
      wscript.echo "<procedimentos para sub-dominio seu.dominio.com.br>"
      

     Case "meu.dominio.com.br"

      wscript.echo "<procedimentos para sub-dominio meu.dominio.com.br>"

     Case else
      wscript.echo "else"
    end Select

     

    Abaixo segue um exemplo para vc conhecer as outras propriedades do objeto "ADSystemInfo" 

    Set objSysInfo = CreateObject("ADSystemInfo")
    Wscript.Echo "User name: " & objSysInfo.UserName
    Wscript.Echo "Computer name: " & objSysInfo.ComputerName
    Wscript.Echo "Site name: " & objSysInfo.SiteName
    Wscript.Echo "Domain short name: " & objSysInfo.DomainShortName
    Wscript.Echo "Domain DNS name: " & objSysInfo.DomainDNSName
    Wscript.Echo "Forest DNS name: " & objSysInfo.ForestDNSName
    Wscript.Echo "PDC role owner: " & objSysInfo.PDCRoleOwner
    Wscript.Echo "Schema role owner: " & objSysInfo.SchemaRoleOwner
    Wscript.Echo "Domain is in native mode: " & objSysInfo.IsNativeMode

    quarta-feira, 13 de dezembro de 2006 23:23
    Moderador
  • Tem uma solução bem melhor e mais rápida que usar o comando CMD /C com o Copy pra executar comandos... usando ferramentas nativas do WSH. Aliás, usar CMD /C dá na mesma que continuar com BAT... não tem ganho nenhum.

    Set FSO = CreateObject("Scripting.FilesystemObject")
    If FSO.FolderExists("c:\pasta") then
        FSO.CopyFolder "origem", "destino"
    End if


    []s,


    --
    Vinicius Canto <scripterbr_at_gmail_dot_com>
    MVP Visual Developer - Scripting
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Blog sobre Scripting: http://viniciuscanto.blogspot.com

    • Sugerido como Resposta Douglas Tesch sexta-feira, 18 de setembro de 2009 19:04
    • Marcado como Resposta Fábio JrModerator sábado, 3 de dezembro de 2011 21:11
    sexta-feira, 15 de dezembro de 2006 19:58
    Moderador
  • Outra alternatica para obter o gateway é usar o comando Netsh, que devolve essas e outras configurações. A parte chata é ter que usar o Wscript.Exec e capturar a saída da tela... que é quase a mesma coisa de usar um BAT. Enfim, é uma alternativa:

    netsh interface ip show address


    []s,
       
    --
    Vinicius Canto <scripterbr_at_gmail_dot_com>
    MVP Visual Developer - Scripting
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Blog sobre Scripting: http://viniciuscanto.blogspot.com



    sexta-feira, 15 de dezembro de 2006 20:01
    Moderador