Visual Studio 使用循环重命名目录中的文件并将其替换为文本框中的文本
Visual Studio rename files on a directory with cycle for and substitute it with text from a textbox
我需要循环方面的帮助,当程序启动时应该重命名所选目录上的文件,但它没有。
这是代码:
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FolderBrowserDialog1.ShowDialog()
Label4.Text = FolderBrowserDialog1.SelectedPath
Dim counter = FolderBrowserDialog1.SelectedPath
Label5.Text = counter.Count
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim basedir As String = FolderBrowserDialog1.SelectedPath
For counter As Integer = 0 To Int(Label5.Text)
My.Computer.FileSystem.RenameFile(basedir, TextBox1.Text + "x")
Next
End Sub
End Class
首先,FolderBrowserDialog1.SelectedPath
returns一个普通的字符串。调用 SelectedPath.Count
不会 给出目录中有多少文件,但 字符串路径由 .[= 组成的字符数29=]
其次,调用 RenameFile(basedir, ...)
不会执行任何操作,因为 basedir
指向单个目录 - 而不是 目录中的文件。
为了获得正确的文件数并遍历文件名,您必须使用类似 Directory.GetFiles(basedir)
.
的名称
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FolderBrowserDialog1.ShowDialog()
Label4.Text = FolderBrowserDialog1.SelectedPath
Label5.Text = Directory.GetFiles(FolderBrowserDialog1.SelectedPath).Count
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim basedir As String = FolderBrowserDialog1.SelectedPath
Dim Files As String() = Directory.GetFiles(basedir) 'Declare an array that holds all file paths.
For counter As Integer = 0 To Files.Length - 1 'Minus one is important here, so that you won't get a "IndexOutOfRangeException".
My.Computer.FileSystem.RenameFile(Files(counter), TextBox1.Text & counter)
Next
End Sub
Files(counter)
表示它当前所在的文件。如果 counter = 0
则 Files(counter)
将是数组中的第一个文件路径,依此类推。
我不明白的一件事是为什么你给新文件起你在 TextBox1
和 x
中输入的名称。您目前正在为该目录中的 每个 文件指定完全相同的名称(这是不可能的)。您能告诉我您真正想将它们重命名为什么吗?
与此同时,我将 x
替换为 counter
。这会将它们重命名为 <whatever is in TextBox1>0
、<whatever is in TextBox1>1
等。
最后一件事,您可能已经注意到,我在 RenameFile
的第二个参数中放置了和号 (&
) 而不是加号 (+
)。使用 & 符号是连接字符串的推荐方式,因为加号在某些情况下可能会导致异常。
编辑:
要保留文件的扩展名,您只需将其解压缩,然后将其添加到新名称中:
For counter As Integer = 0 To Files.Length - 1
Dim FileExtension As String = Path.GetExtension(Files(counter)) 'Keeping the extension.
My.Computer.FileSystem.RenameFile(Files(counter), TextBox1.Text & counter & FileExtension)
Next
我需要循环方面的帮助,当程序启动时应该重命名所选目录上的文件,但它没有。
这是代码:
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FolderBrowserDialog1.ShowDialog()
Label4.Text = FolderBrowserDialog1.SelectedPath
Dim counter = FolderBrowserDialog1.SelectedPath
Label5.Text = counter.Count
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim basedir As String = FolderBrowserDialog1.SelectedPath
For counter As Integer = 0 To Int(Label5.Text)
My.Computer.FileSystem.RenameFile(basedir, TextBox1.Text + "x")
Next
End Sub
End Class
首先,FolderBrowserDialog1.SelectedPath
returns一个普通的字符串。调用 SelectedPath.Count
不会 给出目录中有多少文件,但 字符串路径由 .[= 组成的字符数29=]
其次,调用 RenameFile(basedir, ...)
不会执行任何操作,因为 basedir
指向单个目录 - 而不是 目录中的文件。
为了获得正确的文件数并遍历文件名,您必须使用类似 Directory.GetFiles(basedir)
.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FolderBrowserDialog1.ShowDialog()
Label4.Text = FolderBrowserDialog1.SelectedPath
Label5.Text = Directory.GetFiles(FolderBrowserDialog1.SelectedPath).Count
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim basedir As String = FolderBrowserDialog1.SelectedPath
Dim Files As String() = Directory.GetFiles(basedir) 'Declare an array that holds all file paths.
For counter As Integer = 0 To Files.Length - 1 'Minus one is important here, so that you won't get a "IndexOutOfRangeException".
My.Computer.FileSystem.RenameFile(Files(counter), TextBox1.Text & counter)
Next
End Sub
Files(counter)
表示它当前所在的文件。如果 counter = 0
则 Files(counter)
将是数组中的第一个文件路径,依此类推。
我不明白的一件事是为什么你给新文件起你在 TextBox1
和 x
中输入的名称。您目前正在为该目录中的 每个 文件指定完全相同的名称(这是不可能的)。您能告诉我您真正想将它们重命名为什么吗?
与此同时,我将 x
替换为 counter
。这会将它们重命名为 <whatever is in TextBox1>0
、<whatever is in TextBox1>1
等。
最后一件事,您可能已经注意到,我在 RenameFile
的第二个参数中放置了和号 (&
) 而不是加号 (+
)。使用 & 符号是连接字符串的推荐方式,因为加号在某些情况下可能会导致异常。
编辑:
要保留文件的扩展名,您只需将其解压缩,然后将其添加到新名称中:
For counter As Integer = 0 To Files.Length - 1
Dim FileExtension As String = Path.GetExtension(Files(counter)) 'Keeping the extension.
My.Computer.FileSystem.RenameFile(Files(counter), TextBox1.Text & counter & FileExtension)
Next