重命名一组文件的一部分

时间:2013-05-01 16:33:39

标签: vb.net visual-studio-2010

我在目录中有一个具有以下命名约定的文件列表:

CFW-500-FY13Q4.doc

CFW-501-FY13Q4.doc

CFW-502-FY13Q4.doc

...

CFW-520-FY13Q4.doc

我试图用FY13Q4替换FY14Q1,但我很难绕过如何重命名文件的那一部分而不会丢失编号顺序(500,501)等)。这是我当前的代码,这对我不起作用,因为它只是将CFW-500-FY13Q4的第一个文件重命名为CFW-500-FY14Q1.doc,其余文件不会被触及。

Dim a As Integer = 500
For Each f As String In My.Computer.FileSystem.GetFiles(newDir, FileIO.SearchOption.SearchAllSubDirectories, "*CFW*")
My.Computer.FileSystem.RenameFile(f, "CFW-" & a & "-" & "FY14Q1" & ".doc")

有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:0)

你可以只使用替换方法:

Dim a As Integer = 500
For Each f As String In My.Computer.FileSystem.GetFiles(newDir, FileIO.SearchOption.SearchAllSubDirectories, "*CFW*")
My.Computer.FileSystem.RenameFile(f, f.replace("FY13Q4", "FY14Q1"))

答案 1 :(得分:0)

我建议您开始使用IO命名空间,特别是IO.Directory和IO.FileInfo,因为它使您的代码更易于维护,因为您现在在更高级别操作,而不是简单的字符串。

请参阅Jon Skeet的回答:

how to enumerate files + folders recursively with System.IO.Directory.GetFiles

FileInfo有一个MoveTo方法,可以解决您看到的错误。

答案 2 :(得分:0)

如果这是一次性任务,您可以使用

在命令提示符下执行此操作
ren ????????FY13Q4.doc ????????FY14Q1.doc