0

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

CFW-500-FY13Q4.doc

CFW-501-FY13Q4.doc

CFW-502-FY13Q4.doc

...

CFW-520-FY13Q4.doc

我试图用替换FY13Q4FY14Q1但我很难理解如何只重命名文件的那部分而不丢失编号序列(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")

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

4

3 回答 3

0

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

请参阅 Jon Skeet 的回答:

如何使用 System.IO.Directory.GetFiles 递归枚举文件+文件夹

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

于 2013-05-01T17:36:41.927 回答
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"))
于 2013-05-01T16:35:47.953 回答
0

如果这是一次性任务,您可以在命令提示符下使用

ren ????????FY13Q4.doc ????????FY14Q1.doc
于 2013-05-01T18:13:14.847 回答