none
Renomear diretórios e subdiretórios RRS feed

  • Pergunta

  • Boa tarde!

    Pessoal  preciso de uma ajuda com o seguinte script ele tem que  pesquisar todos os subdiretórios que estão dentro do C:\kteste e caso algum subdiretório tiver os seguintes caracteres @ # $ &  ele remove.  Exemplo:  C:\kteste\kle#ber    ele tem que deixar c:\kteste\kleber

    O script abaixo funciona perfeitamente quando eu declaro apenas um caracter, mas quando tento passar todos os caracteres de uma vez ele da erro.  Abaixo o script:

    On Error Resume Next
    Dim caractere(5), substituir(5)
     
    caractere(0) = "@"
    caractere(1) = "#"
    caractere(2) = "$"
    caractere(3) = "%"
    caractere(4) = "&"

    substituir(0) = ""
    substituir(1) = ""
    substituir(2) = ""
    substituir(3) = ""
    substituir(4) = ""

    strPasta="c:\kteste"
     
    set FSo = CreateObject("Scripting.FileSystemObject")
     
    RenPasta(strPasta)
     
    Sub RenPasta(Pasta)
     
    set folder = FSO.getFolder (Pasta)
     
    if folder.Subfolders.count > 0 then
      for each SubFolder in folder.Subfolders
       RenPasta SubFolder
      next
    end if
     
    For a= 0 to UBOUND(Caractere)
       for each SubFolder in folder.Subfolders
           getPasta folder.path,a
       Next
    Next   
     
    end sub
     
    Sub GetPasta(caminho,nSimb)
    For i = 1 To Len(caminho)
       if Mid(caminho, i, 1) = Caractere(nSimb) Then
          textook = Replace(Caractere(nSimb), Mid(caminho, i, 1),substituir(nSimb))
       Else
          textook = Mid(caminho, i, 1)
       End if
       Texto = texto & textook
    Next
    FSO.MoveFolder caminho , Texto
    End sub
    msgbox "FIM"

    Obs: O mesmo scrip mas para renomear arquivos e  mudando somente o FSO  para  .MoveFile GetArquivo e file.path funciona certinho, só o de diretórios que não.

    Desde já agradeço a ajuda de todos.

     

     

    quinta-feira, 1 de setembro de 2011 19:10

Respostas

  • Ola Klebinhu <p>Segue a solução que encontrei.</p>
    

    strPasta="C:\temp"
     
    set FSo = CreateObject("Scripting.FileSystemObject")
     
    caractere = "@"
    caractere1 = "#"
    caractere2 = "$" 
    caractere3 = "%" 
    caractere4 = "&" 
    
    substituir = ""
     
    RenPasta(strPasta)
     
    Sub RenPasta(Pasta)
     
    set folder = FSO.getFolder (Pasta)
     
    if folder.Subfolders.count > 0 then
       for each SubFolder in folder.Subfolders
        RenPasta SubFolder
       next
     Else
     '   getPasta folder.path, folder.name
     end if
     
    getPasta folder.path , folder.name
     
    
    
    end sub
     
    Sub GetPasta(caminho,nome)
     For i = 1 To Len(nome)
        if Mid(nome, i, 1) = caractere Then
           textook = Replace(caractere, Mid(nome, i, 1),substituir)
        ElseIf Mid(nome, i, 1) = caractere1 Then
           textook = Replace(caractere1, Mid(nome, i, 1),substituir)
        ElseIf Mid(nome, i, 1) = caractere2 Then
           textook = Replace(caractere2, Mid(nome, i, 1),substituir)
        ElseIf Mid(nome, i, 1) = caractere3 Then
           textook = Replace(caractere3, Mid(nome, i, 1),substituir)
        ElseIf Mid(nome, i, 1) = caractere4 Then
           textook = Replace(caractere4, Mid(nome, i, 1),substituir)
        Else  
           textook = Mid(nome, i, 1)
        End if
        Texto = texto & textook
     Next
     Texto = Left(caminho,(Len(caminho)- Len(nome))) & Texto
     FSO.MoveFolder caminho , Texto
     End sub
     
    

    Ref. http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/3f6c406f-3e39-4f67-bd79-30bd3d91f612

    Abraços

     

     


    Edson Matias Fagundes Junior - (Nioks)
    MCP, MCTS: 2008, MCTS:MBS
    Se a resposta for valida por favor vote como útil.
    sexta-feira, 2 de setembro de 2011 02:34

Todas as Respostas

  • Ola Klebinhu <p>Segue a solução que encontrei.</p>
    

    strPasta="C:\temp"
     
    set FSo = CreateObject("Scripting.FileSystemObject")
     
    caractere = "@"
    caractere1 = "#"
    caractere2 = "$" 
    caractere3 = "%" 
    caractere4 = "&" 
    
    substituir = ""
     
    RenPasta(strPasta)
     
    Sub RenPasta(Pasta)
     
    set folder = FSO.getFolder (Pasta)
     
    if folder.Subfolders.count > 0 then
       for each SubFolder in folder.Subfolders
        RenPasta SubFolder
       next
     Else
     '   getPasta folder.path, folder.name
     end if
     
    getPasta folder.path , folder.name
     
    
    
    end sub
     
    Sub GetPasta(caminho,nome)
     For i = 1 To Len(nome)
        if Mid(nome, i, 1) = caractere Then
           textook = Replace(caractere, Mid(nome, i, 1),substituir)
        ElseIf Mid(nome, i, 1) = caractere1 Then
           textook = Replace(caractere1, Mid(nome, i, 1),substituir)
        ElseIf Mid(nome, i, 1) = caractere2 Then
           textook = Replace(caractere2, Mid(nome, i, 1),substituir)
        ElseIf Mid(nome, i, 1) = caractere3 Then
           textook = Replace(caractere3, Mid(nome, i, 1),substituir)
        ElseIf Mid(nome, i, 1) = caractere4 Then
           textook = Replace(caractere4, Mid(nome, i, 1),substituir)
        Else  
           textook = Mid(nome, i, 1)
        End if
        Texto = texto & textook
     Next
     Texto = Left(caminho,(Len(caminho)- Len(nome))) & Texto
     FSO.MoveFolder caminho , Texto
     End sub
     
    

    Ref. http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/3f6c406f-3e39-4f67-bd79-30bd3d91f612

    Abraços

     

     


    Edson Matias Fagundes Junior - (Nioks)
    MCP, MCTS: 2008, MCTS:MBS
    Se a resposta for valida por favor vote como útil.
    sexta-feira, 2 de setembro de 2011 02:34
  • Edson,  fiz o teste com o script e funcionou perfeitamente.

    Muito obrigado pela ajuda.

    Abraço

    • Marcado como Resposta Klebinhu Ramos sexta-feira, 2 de setembro de 2011 18:18
    • Não Marcado como Resposta Klebinhu Ramos sexta-feira, 2 de setembro de 2011 18:19
    sexta-feira, 2 de setembro de 2011 18:18