none
Copiar Pasta RRS feed

  • Pergunta

  • Iaeee PessoALL,

    Alguém teria um script para copiar uma determinada pasta de vários computadores da rede para um ponto em comum, por exemplo,
     minha estação?

    Obrigado.

    sexta-feira, 11 de agosto de 2006 13:42

Respostas

  • Salve o código abaixo em um arquivo VBS

     

    on error resume next
    Dim oNet, Computers, Lercomp, Arquivos,origem,destino,copiarpasta

     

    Public Sub Grava(comp)
     Const ForAppending = 8
     arq_ext = "C:\CopyFolders.log"
     Set fso = CreateObject("Scripting.FileSystemObject")
     Set arq_int = fso.OpenTextFile(arq_ext , ForAppending, true)
     data = now()
     arq_int.write (data & " - " & comp & vbcrlf)
     arq_int.close
    End Sub

    Set arquivos = CreateObject("Scripting.FileSystemObject")
    Set Computers = arquivos.OpenTextFile("Computers.txt")

     

    Do Until computers.AtEndOfStream
     lercomp = Computers.ReadLine

    origem = "\C$\Program Files"
    copiarpasta = "Radmin"
    destino= "C:\Logs\"

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.CreateFolder(destino&lercomp)

     

    aMachines = split(lercomp, ";")
     
    For Each machine in aMachines
        Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
            ExecQuery("select * from Win32_PingStatus where address = '"_
                & machine & "'")
        For Each objStatus in objPing
          If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
     WScript.Echo("Não foi possível acessar " & lercomp & " Verificar CopyFolder.log no C:")

     grava(lercomp)
      
     else


    Set oNet = CreateObject("WScript.Network")
    bForce = "True"
    bUpdateProfile = "True"

    oNet.RemoveNetworkDrive "X:", bForce, bUpdateProfile
    oNet.MapNetworkDrive "X:","\\" & lercomp & origem


    Const FOF_CREATEPROGRESSDLG = &H0&

    ParentFolder = ObjFolder
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(ParentFolder)

    objFolder.CopyHere "X:\"&copiarpasta, FOF_CREATEPROGRESSDLG
     
    oNet.RemoveNetworkDrive "X:", bForce, bUpdateProfile


     End if
    Next
    Next
    Loop

    Computers.close

     

    '**************************************************************************

    Nas linhas:

    origem = "\C$\Program Files" ' coloque o local onde está a pasta que você quer copiar.
    copiarpasta = "Radmin" 'Informe a pasta que será copiada
    destino= "C:\Logs\" ' o local na sua máquina para onde será copiado a pasta acima.

     

    No mesmo diretório onde estiver o arquivo VBS, deve existir um arquivo Computers.txt com a relação das máquinas que você quer copiar (uma máquina por linha).

    Antes de tentar a cópia é feito um ping na estação, caso ele não consiga acessar ele gera um arquivo chamado CopyFolder.log no C:\ de sua estação.

     

    Espero ter ajudado.

     

    []'s

     

     

     

     

    sexta-feira, 11 de agosto de 2006 13:47