In .NET, the "something more" can be put into a function that gets called for each match:
Sub Main()
dim files() as string = { "Filename- 1954.04.10.- ... .mp3","Filename- 1948.11.24.- ... .mp3","Filename- 1948.11.25.- ... .mp3","Filename- 1942.06.09.- ... .mp3" }
for each f in files
System.Io.File.Rename(f, RenameFile(f))
next
End Sub
Function RenameFile(inputFile As String) As String
Dim re = New System.Text.RegularExpressions.Regex("(\d\d\d\d)\.(\d\d)\.(\d\d)\.")
Return re.Replace(inputFile, AddressOf getReplacement)
End Function
Function getReplacement(m As System.Text.RegularExpressions.Match) As String
Dim yyyy = CInt(m.Groups(1).Value)
Dim mm = CInt(m.Groups(2).Value)
Dim dd = CInt(m.Groups(3).Value)
Dim theDate = New Date(yyyy, mm, dd)
Return theDate.ToString("yyyy.mm.dd.ddd")
End Function