none
Vbs para leitura de pastas e mover arquivos RRS feed

  • Pergunta

  • Imagine uma estrutura com varias pastas com nomes variados, preciso de um codigo que leia e acesse essas pastas e mova todos os arquivos HTML e TXT para uma outra pasta. Conseguir mover apenas TXT e de uma unica pasta, nao consegui montar um script para ler as pastas sozinho.

    No aguardo e obrigado

    sexta-feira, 27 de novembro de 2009 18:31

Respostas

  • Olá,

    Verifique o script abaixo:


    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")


    'Pasta a ser verificada
    strPasta = "C:\teste2"

    'Pasta onde será copiado os arquivos
    strDest = "C:\teste\"

    'Extensao
    arrTipos = "htm;html;txt"


    arrTipos = split(arrTipos,";")

    Set colFiles = objWMIService.ExecQuery _
        ("ASSOCIATORS OF {Win32_Directory.Name='" &strPasta& "'} Where " _
            & "ResultClass = CIM_DataFile")

    For Each objFile in colFiles
      For Each tipo in arrTipos
       If objFile.Extension = tipo Then
             strCopy = strDest & objFile.FileName & "." & objFile.Extension
             objFile.Copy(strCopy)
             objFile.Delete
         End If
     Next
    Next



    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    sexta-feira, 27 de novembro de 2009 19:03

Todas as Respostas

  • Olá,

    Verifique o script abaixo:


    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")


    'Pasta a ser verificada
    strPasta = "C:\teste2"

    'Pasta onde será copiado os arquivos
    strDest = "C:\teste\"

    'Extensao
    arrTipos = "htm;html;txt"


    arrTipos = split(arrTipos,";")

    Set colFiles = objWMIService.ExecQuery _
        ("ASSOCIATORS OF {Win32_Directory.Name='" &strPasta& "'} Where " _
            & "ResultClass = CIM_DataFile")

    For Each objFile in colFiles
      For Each tipo in arrTipos
       If objFile.Extension = tipo Then
             strCopy = strDest & objFile.FileName & "." & objFile.Extension
             objFile.Copy(strCopy)
             objFile.Delete
         End If
     Next
    Next



    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    sexta-feira, 27 de novembro de 2009 19:03
  • Se tivermos subdiretórios dentro de strPasta = "C:\teste2" como que o código faria para ler eles também?


    Exemplo:

    Dentro da pasta C:\teste2 tivermos outras 30 pastas e dentro destas 30 pastas mais duas pastas em cada uma.


    White
    terça-feira, 22 de dezembro de 2009 17:23
  • Através do exemplo deste link adaptei e fiz o código que eu necessitava:
    http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/fda61179-3d33-483c-b0a9-07a0796380af

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
    Set FSO = CreateObject("Scripting.FileSystemObject")
    'PARTE DO ARQUIVO QUE É COMUM PARA TODOS
    strArquivo = "xls"
    'PASTA ONDE PROCURAR
    strPasta = "C:\teste2\2009\01\"
    ShowSubfolders FSO.GetFolder(strPasta)
    Sub ShowSubFolders(Folder)
        For Each Subfolder in Folder.SubFolders
           Set colFiles = objWMIService.ExecQuery _
               ("ASSOCIATORS OF {Win32_Directory.Name='" & SubFolder.path & "'} Where " _
                   & "ResultClass = CIM_DataFile")      
                For Each objFile in colFiles
                   if objFIle.Extension = strArquivo Then
                      FSO.CopyFile objFile.name , "C:\tmp\ConsXLS\" & objFile.filename & "." & objFile.extension, TRUE
                   End if
                Next
            ShowSubFolders Subfolder
        Next
    End Sub

    White
    • Sugerido como Resposta mbfigueredo quarta-feira, 23 de dezembro de 2009 13:22
    quarta-feira, 23 de dezembro de 2009 13:22
  • Jesiel como vai?

    Preciso fazer um script que faz a mesma coisa porem gera o log infomando o que foi gravado. Lendo outros posts vi um script seu que funcionou perfeitamente onde tentei adicionar a geração do log, porem ele esta apresentando erros. Sabe o que pode estar errado?

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    'Pasta a ser verificada
    strPasta = "E:\Teste"

    'Pasta onde será copiado os arquivos
    strDest = "Y:\Tests\move\"

    'Extensao 
    arrTipos = "pdf"

    ' NOME DO ARQUIVO DE LOG
    strLogFile = "c:\move.txt"

    arrTipos = split(arrTipos,";")
    Set objLogFile = objFSO.OpenTextFile(strLogFile, 8, True, 0)
    objLogFile.WriteLine  VBCRLF
    objLogFile.WriteLine "==================================================="
    objLogFile.WriteLine "ARQUIVOS MOVIDOS EM: " & now
    objLogFile.WriteLine "===================================================

    Set MyFiles = Folder.files
    Set colFiles = objWMIService.ExecQuery _
        ("ASSOCIATORS OF {Win32_Directory.Name='" &strPasta& "'} Where " _
            & "ResultClass = CIM_DataFile")

    For Each objFile in colFiles
      For Each tipo in arrTipos
       If objFile.Extension = tipo Then
             strCopy = strDest & objFile.FileName & "." & objFile.Extension
    objLogFile.WriteLine "Arquivo : "  & myfiles.name &  " copiado em : " & Now
             objFile.Copy(strCopy)
             objFile.Delete
         End If
     Next
    Next

    sexta-feira, 13 de abril de 2012 12:26