我为SNES模拟器下载了一包roms,当我转移它们时,我收到了非法文件名的错误。所以我开始编写一个简单的应用程序,它将从roms标题中删除问题char。我找到了那部分,但我无法弄清楚如何保存编辑过的文件名。请记住文件夹中有762个rom,因此手动执行此操作不是一个选项。提前感谢任何指导。
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ListBox1.Items.AddRange(IO.Directory.GetFiles("c:\ROMS"))
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim Index As Integer = ListBox1.SelectedIndex
Dim Results = (From T In ListBox1.Items
Select System.Text.RegularExpressions.Regex.Replace(CStr(T),
"[""]", String.Empty).Replace("[!]", "")
).ToArray
ListBox1.Items.Clear()
ListBox1.Items.AddRange(Results)
If Index <> -1 Then
ListBox1.SelectedIndex = Index
End If
End Sub
End Class
我正在使用button1将文件夹打开到列表框中。 按钮2从标题中删除不需要的[!] 按钮3将是保存功能的位置。
####### EDIT #####
我弄清楚我的具体案例真正的问题是什么。 我正在将roms的文件夹转移到我的Xbox上,显然这是一个字符限制,而不是对使用的字符的限制。不知道实际允许使用的字符数量,但对于任何可能尝试做我所做的事情的人,只需使用我的代码来删除标题中不必要的字符。
答案 0 :(得分:1)
将另一个列表框添加到名为Listbox2的表单中,然后使用下面的代码。另请注意Button2中GetDirectoryName
和GetFileName
的使用,这样就不会替换文件夹名称中的任何字符...只有文件名
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ListBox1.Items.AddRange(IO.Directory.GetFiles("c:\ROMS"))
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim Index As Integer = ListBox1.SelectedIndex
Dim Results = (From T In ListBox1.Items
Select IO.Path.GetDirectoryName(CStr(T)) & "\" & System.Text.RegularExpressions.Regex.Replace(IO.Path.GetFileName(CStr(T)),
"[""]", String.Empty).Replace("[!]", "")
).ToArray
ListBox2.Items.Clear()
ListBox2.Items.AddRange(Results)
If Index <> -1 Then
ListBox1.SelectedIndex = Index
ListBox2.SelectedIndex = Index
End If
End Sub
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
For x As Integer = 0 To Me.ListBox1.Items.Count - 1
IO.File.Move(Me.ListBox1.Items(x), Me.ListBox2.Items(x))
Next
MsgBox("Done!")
End Sub
End Class