保存对文件夹中文件名所做的更改。全部762个

时间:2015-12-30 23:03:31

标签: vb.net replace

我为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上,显然这是一个字符限制,而不是对使用的字符的限制。不知道实际允许使用的字符数量,但对于任何可能尝试做我所做的事情的人,只需使用我的代码来删除标题中不必要的字符。

1 个答案:

答案 0 :(得分:1)

将另一个列表框添加到名为Listbox2的表单中,然后使用下面的代码。另请注意Button2中GetDirectoryNameGetFileName的使用,这样就不会替换文件夹名称中的任何字符...只有文件名

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