首先,FolderBrowserDialog1.SelectedPath
返回一個正常的字符串。調用SelectedPath.Count
不會給你目錄中有多少個文件,但字符串路徑中包含多少個字符。
其次,調用RenameFile(basedir, ...)
不會做任何事情,因爲basedir
指向一個目錄 - 不在目錄中的文件。
爲了獲得正確的文件數量,AND重複遍歷文件名,你必須使用類似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
。您目前正在給該目錄中的每個文件提供完全相同的名稱(這是不可能的)。你能告訴我你真的想要重命名嗎?
與此同時,我用counter
替換了x
。這會將它們重命名爲<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
對不起,我沒有說在此之前,無論如何,這個程序可以幫助我爲媒體中心重命名文件,例如1 <在季節x的文本框中編號,另一個1 <本集編號。現在我有另一個問題可以保持文件的擴展名? – Axel
@Axel:是的,這是可能的。看我的編輯。 –