重命名文件夹中的所有文件

时间:2015-03-08 18:31:25

标签: vb.net loops file-rename

我想知道是否可以使用vb.NET重命名文件夹中的所有文件,使用vb.NET

我很绿,不确定这是否可能。 假设有一个包含文件的文件夹:

  

Text_Space_aliens.txt,fishing_and_hunting_racoons.txt和mapple.txt。

使用一些凭据:

Dim outPut as String = "TextFile_"
Dim fileType as String = ".txt"
Dim numberOfFiles = My.Computer.FileSystem.GetFiles(LocationFolder.Text)
Dim filesTotal As Integer = CStr(numberOfFiles.Count)

是否可以重命名这些,无论以前的名称如何,例如:

  

TextFile_1.txt,TextFile_2.txt& TextFile_3.txt

一次操作?

1 个答案:

答案 0 :(得分:2)

我认为这应该可以解决问题。使用Directory.GetFiles(..)查找特定文件。使用for..each和move aka rename )文件将结果枚举为新名称。您必须调整sourcePathsearchPattern才能为您效劳。

Private Sub renameFilesInFolder()
    Dim sourcePath As String = "e:\temp\demo"
    Dim searchPattern As String = "*.txt"
    Dim i As Integer = 0
    For Each fileName As String In Directory.GetFiles(sourcePath, searchPattern, SearchOption.AllDirectories)
        File.Move(Path.Combine(sourcePath, fileName), Path.Combine(sourcePath, "txtFile_" & i & ".txt"))
        i += 1
    Next
End Sub

在你的标题中,你会按时间顺序陈述一些内容,但在你的问题中,你再也没有提到它。所以我做了另一个例子按creationTime排序文件

Private Sub renameFilesInFolderChronologically()
    Dim sourcePath As String = "e:\temp\demo"
    Dim searchPattern As String = "*.txt"

    Dim curDir As New DirectoryInfo(sourcePath)

    Dim i As Integer = 0
    For Each fi As FileInfo In curDir.GetFiles(searchPattern).OrderBy(Function(num) num.CreationTime)
        File.Move(fi.FullName, Path.Combine(fi.Directory.FullName, "txtFile_" & i & ".txt"))
        i += 1
    Next
End Sub

我从来没有在VB.net中做过Lambdas,但是测试了我的代码,它按预期工作。如果出现任何问题,请告诉我。