VBS Substituir caracteres de nomes de arquivos de todos os arquivos em pastas e subpastas

0

Eu preciso alterar muitos nomes de arquivos, me livrar de caracteres especiais (ç, por exemplo - mas é melhor se ele puder ser ajustado para uma lista de valores em vez de um por vez). Eu não sou vbs proficiente, mas já encontrei algum código e tentei fazer isso em matemática minhas necessidades, mas ainda não está funcionando.

Este código altera os arquivos da pasta especificada "C: \ Usuários \ usuário \ Desktop \ teste", mas não os das subpastas após esse caminho.

Set objFso = CreateObject("Scripting.FileSystemObject")
Set Folder = objFso.GetFolder("C:\Users\user\Desktop\test")

For Each Subfolder in Folder.SubFolders
    For Each File In Folder.Files
        sNewFile = File.Name
        sNewFile = Replace(sNewFile,"ç","+")

        if (sNewFile<>File.Name) then 
            File.Move(File.ParentFolder+"\"+sNewFile)
        end if

    Next
Next

Alguma ajuda, por favor ??

    
por VCS 29.06.2017 / 15:14

1 resposta

1

Você não está usando o elemento Subfolder em seu loop.

Uma solução recursiva alternativa está abaixo:

Set objFso = CreateObject("Scripting.FileSystemObject")
Browsefolder objFso.GetFolder("C:\Users\user\Desktop\test")

Sub Browsefolder(Folder)
    For Each Subfolder In Folder.Subfolders
        Browsefolder Subfolder
    Next
    For Each File In Folder.Files
        sNewFile = File.Name
        sNewFile = Replace(sNewFile, "ç", "+")
        If (sNewFile <> File.Name) Then
            File.Move (File.ParentFolder & "\" & sNewFile)
        End If
    Next
End Sub 
    
por 29.06.2017 / 18:48