Vbscript 重命名循环中的多个文件

Vbscript 重命名循环中的多个文件,vbscript,renaming,Vbscript,Renaming,我有一个包含8个Excel文件的文件夹,具有以下命名约定: date_All_Groups date_HRFull_Status_All date_RME_Groups_Excluded 我找到的原始代码与上面的代码完全相同,但是每个循环的中只有一个If语句,而Exit For则在If语句中 当前,当我执行脚本时,代码仅重命名一个文件,并且总是首先重命名HR文件。 如果我再次执行脚本,它将从所有组开始,然后从排除的组开始,依此类推 “Echo Completed”也不起任何作用。如果文件具有相同

我有一个包含8个Excel文件的文件夹,具有以下命名约定:

date_All_Groups date_HRFull_Status_All date_RME_Groups_Excluded 我找到的原始代码与上面的代码完全相同,但是每个循环的
中只有一个
If
语句,而
Exit For
则在
If
语句中

当前,当我执行脚本时,代码仅重命名一个文件,并且总是首先重命名HR文件。 如果我再次执行脚本,它将从所有组开始,然后从排除的组开始,依此类推


“Echo Completed”也不起任何作用。

如果文件具有相同的“日期”,您只需要查找,例如(如果日期是iso日期“YYYYMMDD”)(
date
返回“今日”日期)

以及每一项:

For Each file In folder.Files
    If InStr(file.Name, IsoDate) = 1 then 'if is in the start of the string
        file.Name = Mid(file.Name, Len(IsoDate)+1) 'The same name with out date
    End IF
Next

如果您只想将文件重命名为“规范”名称,您可以这样做,假设您只想删除文件名开头的日期,并将下划线替换为空格:

Set re = New RegExp
re.Pattern = "\d{4}-\d{2}-\d{2}_(.*\.csv)"

For Each f In folder.Files
    For Each m In re.Execute(f.Name)
        f.Name = Replace(m.Submatches(0), "_", " ")
    Next
Next

首先,您可以删除底部的
Exit For
,它告诉它只运行一次,然后在到达
Next
之前退出For循环。然后你可以用谷歌vbscript文件通配符来学习如何对文件名进行部分匹配。我不清楚你想要的结果是什么。是否要将文件重命名为
rename文件35;
变量中的确切名称(从文件名中删除日期)?首先,你为什么要重命名它们?@KenWhite谢谢你的帮助,它成功了!非常感谢。@AnsgarWiechers我只需要使用重命名文件中的名称重命名这些文件#因为每个月生成这些文件时,我都会运行脚本进行重命名,这将允许宏正常工作,因为文件名完全匹配。:)然后,正如Ken提到的,您所需要做的就是删除
的退出,这样循环就不会在第一个文件之后终止。不过,还有更优雅的方法,请参见下面我的答案。不确定文件是否与今天提取的日期相同,而其他文件将于明天提取。。但无论如何,我的问题已经在上面得到了回答。谢谢你的帮助!谢谢,我也会试试的!:)很抱歉,我现在才回到这一点,但它的工作非常出色!非常感谢。
For Each file In folder.Files
    If InStr(file.Name, IsoDate) = 1 then 'if is in the start of the string
        file.Name = Mid(file.Name, Len(IsoDate)+1) 'The same name with out date
    End IF
Next
Set re = New RegExp
re.Pattern = "\d{4}-\d{2}-\d{2}_(.*\.csv)"

For Each f In folder.Files
    For Each m In re.Execute(f.Name)
        f.Name = Replace(m.Submatches(0), "_", " ")
    Next
Next