RENOMEAR PASTAS E ARQUIVOS

CAIO.FR.SP 25/04/2010 19:38:52
#340224
Galera fiz uma aplicação para renomear pastas e arquivos de do drive D:, so ques esta dando um probleminha, algumas pastas e arquivos o sistema simplesmente ignora, alguem pode me ajudar?
O que o sisteminha tem q fazer é remover [ô] e deixar em Maiusculo o nome das pasta de todo drive.
abaixo o codigo que uso.


Private Sub Corrigi()
If Not FSO.DriveExists([Ô]d:[Ô]) Then Exit Sub
dir_pastas.Path = [Ô]d:\[Ô]
lbl_execucao.Caption = [Ô]Em Execução: Corrigindo generos[Ô]
For i = 0 To dir_pastas.ListCount
If Mid(dir_pastas.List(i), Len(dir_pastas.Path) + 1, 2) = [Ô]()[Ô] Then
genero = NomeArquivo(Replace(UCase(dir_pastas.List(i)), [Ô][ô][Ô], [Ô][Ô]))
Call RenomeiaPastas(dir_pastas.List(i), genero)
lst_generos.AddItem genero
End If
Next i
If lst_generos.ListCount < 0 Then Exit Sub
lbl_execucao.Caption = [Ô]Em Execução: Corrigindo albums[Ô]
For i = 0 To lst_generos.ListCount - 1
genero = lst_generos.List(i)
dir_pastas.Path = [Ô]d:\[Ô] & genero & [Ô]\[Ô]
For x = 0 To dir_pastas.ListCount - 1
album = NomeArquivo(dir_pastas.List(x))
alb = Replace(UCase(album), [Ô][ô][Ô], [Ô][Ô])
Call RenomeiaPastas([Ô]d:\[Ô] & genero & [Ô]\[Ô] & album, alb)
If dir_pastas.List(x) <> [Ô][Ô] Then
lst_albuns.AddItem NomeArquivo(dir_pastas.List(x))
file_arquivos.Path = [Ô]d:\[Ô] & genero & [Ô]\[Ô] & alb & [Ô]\[Ô]
If file_arquivos.ListCount < 1 Then Exit Sub
lbl_execucao.Caption = [Ô]Em Execução: Carregando midias[Ô]
For z = 0 To file_arquivos.ListCount - 1
midia = Replace(UCase(file_arquivos.List(z)), [Ô][ô][Ô], [Ô][Ô])
If File_Exists([Ô]d:\[Ô] & genero & [Ô]\[Ô] & alb & [Ô]\[Ô] & file_arquivos.List(z)) Then
Call RenomeiaArquivo([Ô]d:\[Ô] & genero & [Ô]\[Ô] & alb & [Ô]\[Ô] & file_arquivos.List(z), midia)
lst_arquivos.AddItem midia
End If
Next z
End If
Next x
Next i
Label1.Caption = [Ô]Generos: [Ô] & lst_generos.ListCount
Label2.Caption = [Ô]Albums: [Ô] & lst_albuns.ListCount
Label3.Caption = [Ô]Midias: [Ô] & lst_arquivos.ListCount
lbl_execucao.Caption = [Ô]Finalizado...[Ô]
End Sub

Function NomeArquivo(Caminho As String) As String
For i = Len(Caminho) To 1 Step -1
If Mid(Caminho, i, 1) = [Ô]\[Ô] Then
NomeArquivo = Right(Caminho, Len(Caminho) - i)
Exit Function
End If
Next i
End Function

Function RenomeiaPastas(Pasta, nome) As Boolean
Dim P As Folder
On Error GoTo erro
Set P = FSO.GetFolder(Pasta)
P.Name = Trim([Ô]temp[Ô])
P.Name = Trim(nome)
RenomeiaPastas = True
Exit Function
erro:
If Err.Number = 58 Then
Call GeraLog(Pasta & [Ô] já existe[Ô], App.Path & [Ô]\[Ô] & App.EXEName & [Ô].log[Ô])
Exit Function
End If
If Err.Number = 76 Then
Call GeraLog(Pasta & [Ô] não existe[Ô], App.Path & [Ô]\[Ô] & App.EXEName & [Ô].log[Ô])
Exit Function
End If
Call GeraLog([Ô]Não foi possivel renomear: [Ô] & Pasta & [Ô] - [Ô] & Err.Number & [Ô] - [Ô] & Err.Description, App.Path & [Ô]\[Ô] & App.EXEName & [Ô].log[Ô])
End Function

Function RenomeiaArquivo(Arquivo, nome) As Boolean
Dim A As File
On Error GoTo erro
Set A = FSO.GetFile(Arquivo)
A.Name = Trim([Ô]temp[Ô])
A.Name = Trim(nome)
RenomeiaArquivo = True
Exit Function
erro:
If Err.Number = 58 Then
Call GeraLog(Arquivo & [Ô] já existe[Ô], App.Path & [Ô]\[Ô] & App.EXEName & [Ô].log[Ô])
Exit Function
End If
If Err.Number = 76 Then
Call GeraLog(Arquivo & [Ô] não existe[Ô], App.Path & [Ô]\[Ô] & App.EXEName & [Ô].log[Ô])
Exit Function
End If
Call GeraLog([Ô]Não foi possivel renomear: [Ô] & Arquivo & [Ô] - [Ô] & Err.Number & [Ô] - [Ô] & Err.Description, App.Path & [Ô]\[Ô] & App.EXEName & [Ô].log[Ô])
End Function

CAIO.FR.SP 25/04/2010 19:42:25
#340226
esse codigo assim é mais complexo, ele renomeia apenas a pasta que começam com () na raiz do d: e suas sub-pastas, mais pode me ajudar com uma função mais simples que renomeia todas pastas e arquivo do d:.
Tópico encerrado , respostas não são mais permitidas