Всем здравствуйте!
Возникла проблема такого рода: есть куча файлов очень большого объёма, у них дурацкие имена, с пробелами (ну и т.д.), и вот есть желание эти пробелы заменить. Как это сделать? Вручную я пытался, но времени теряется очень много.
Option Explicit
Public Sub ReplaceFileName(ByVal Path As String, ByVal Mask As String, ByVal Find As String, ByVal Replace As String)
Const DisabledChars As String = "\/:*?""<>|"
Dim FileName As String
Dim FileNameNew As String
Dim i As Long
If (Len(Find) = 0) Then Exit Sub
For i = 1 To Len(Replace)
If (InStr(1, DisabledChars, Mid$(Replace, i, 1), vbTextCompare)) Then 'bad symbole
Mid$(Replace, i, 1) = "_" 'good symbole by default
'or
'Exit Sub
End If
Next
Path = VBA.Replace(Path, "/", "\")
If (Right$(Path, 1) <> "\") Then Path = Path & "\"
FileName = Dir$(Path & Mask)
Do While (Len(FileName))
FileNameNew = VBA.Replace(FileName, Find, Replace, , , vbTextCompare)
If (StrComp(FileName, FileNameNew, vbTextCompare)) Then
FileCopy Path & FileName, Path & FileNameNew
Kill Path & FileName
Debug.Print "Renamed: '" & FileName & "' to '" & FileNameNew & "' in Folder '" & Path & "'"
End If
FileName = Dir$()
Loop
End Sub
Public Function test()
Call ReplaceFileName("d:\1", "*.*", " ", "_")
Call ReplaceFileName("d:\1", "*.*", "_", "?_")
Call ReplaceFileName("d:\1", "*.*", "_", "")
End Function
test
Renamed: 'test 2 - txt .ini' to 'test_2_-_txt_.ini' in Folder 'd:\1\'
Renamed: 'test_2_-_txt_.ini' to 'test__2__-__txt__.ini' in Folder 'd:\1\'
Renamed: 'test__2__-__txt__.ini' to 'test2-txt.ini' in Folder 'd:\1\'
Call ReplaceFileName("d:\1", "*.*", " ", "_")
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 52