У меня есть следующий код для удаления недопустимых символов в имени файла.
Imports System.IO
Imports System.Text.RegularExpressions
Public Class Form1
Dim fp As String
Private Sub b1_Click(sender As Object, e As EventArgs) Handles b1.Click
If (FolderBrowserDialog1.ShowDialog() = DialogResult.OK) Then
fp = FolderBrowserDialog1.SelectedPath
t2.Text = fp
End If
End Sub
Private Sub b2_Click(sender As Object, e As EventArgs) Handles b2.Click
Dim files() As FileInfo = New DirectoryInfo(fp).GetFiles("*.*", IO.SearchOption.AllDirectories)
For Each file As FileInfo In files
Dim oldName = file.Name
Dim ons As String = oldName
t1.AppendText(ons + vbNewLine)
Dim newName = Regex.Replace(oldName, "[^0-9a-zA-Z.]", "-")
If oldName <> newName Then
Dim newPath = Path.Combine(file.Directory.FullName, newName)
file.MoveTo(newPath)
End If
Next
End Sub
End Class
Кажется, это проблема с FileInfo
, который не может быть преобразован в строку в то же время, что Regex.Replace
также отказывается от некоторой проблемы с перегрузкой.
И то, и другое выходит за рамки моего понимания.