我在目录中有一个具有以下命名约定的文件列表:
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")
有人能指出我正确的方向吗?
答案 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
答案 2 :(得分:0)
如果这是一次性任务,您可以使用
在命令提示符下执行此操作ren ????????FY13Q4.doc ????????FY14Q1.doc