我在一个目录中有一个文件列表,命名约定如下:
CFW-500-FY13Q4.doc
CFW-501-FY13Q4.doc
CFW-502-FY13Q4.doc
..。
CFW-520-FY13Q4.doc
我试图用FY14Q1替换FY13Q4,但我很难弄清楚如何在不丢失编号顺序(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")谁能给我指个方向?
发布于 2013-05-02 00:35:48
您可以只使用一个替换方法:
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-02 01:36:42
我建议您开始使用IO名称空间,特别是IO.Directory和IO.FileInfo,因为它使您的代码更易于维护,因为您现在在更高的级别上操作,而不是简单的字符串。
请看Jon Skeet的回答:
how to enumerate files + folders recursively with System.IO.Directory.GetFiles
FileInfo有一个MoveTo方法,它可以解决您看到的错误。
发布于 2013-05-02 02:13:15
如果这是一次性任务,则可以在命令提示符下使用
ren ????????FY13Q4.doc ????????FY14Q1.dochttps://stackoverflow.com/questions/16322314
复制相似问题