在VBS中使用循环重命名文件

时间:2016-01-20 15:29:28

标签: file vbscript rename

我已经有一个脚本可以为以某些字符开头的文件名执行saveas例程。

这是下面的脚本。

        'launch Excel and open file
Const xlExcel8          = 56
Const xlOpenXMLWorkbook = 51
Set fso   = CreateObject("Scripting.FileSystemObject")
Set xlObj = CreateObject("Excel.Application")


Set re = New RegExp
re.Pattern = "^ABC.*\.xlsx$"
re.IgnoreCase = True

For Each f In fso.GetFolder("C:\Users\Jimbo\Documents\_ThisWeek").Files
  If re.Test(f.Name) Then
    Set xlFile = xlObj.WorkBooks.Open(f.Path)
    xlObj.DisplayAlerts = False
        xlfile.SaveAs "C:\Users\Jimbo\Documents\_ThisWeek\Weekly Feed File.xls", xlExcel8

xlFile.Close True


End If
xlObj.DisplayAlerts = True
Next

Set re = New RegExp
re.Pattern = "^ABC.*\.xlsx$"
re.IgnoreCase = True

For Each f In fso.GetFolder("C:\Users\Jimbo\Documents\_ThisWeek").Files
  If re.Test(f.Name) Then
    fso.Deletefile(f.Path)
End If

Next 


xlObj.Quit

任何人都可以帮助更新脚本以重命名文件而不是执行saveas吗?

2 个答案:

答案 0 :(得分:1)

这是一个非常简单的例子。

我没有足够的时间继续讨论如何重命名文件,因此您需要填写该逻辑。我刚刚定义了一个变量strName,它包含一个示例的字符串值。

您可能希望将strName语句中的If设置为适合您的内容以及每个循环中的更改。

如果路径或名称很复杂,请确保双引号变量。

'rename files from one folder to another
option explicit
Dim fso:      Set fso = CreateObject("Scripting.FileSystemObject")
Dim strPath:  strPath = "C:\Users\Jimbo\Documents\_AnotherFolder\"
Dim strName:  strName = "SetYourNameHere.xls"
Dim re:       Set re = New RegExp
Dim oFile

re.Pattern = "^ABC.*\.xlsx$"
re.IgnoreCase = True

For Each oFile In fso.GetFolder("C:\Users\Jimbo\Documents\_ThisWeek").Files
    If re.Test(oFile.Name) Then
        oFile.move strPath
        oFile.name = strName
    End If
Next

您已拥有该文件对象。只需将它自己的方法移动到您的其他文件夹,然后使用它的name属性将值设置为您想要的名称。

您应该添加验证文件尚未存在于该文件夹中并正常处理该情况。

答案 1 :(得分:0)

您可以使用MoveFile Method

重命名文件
Dim Fso
Set Fso = WScript.CreateObject("Scripting.FileSystemObject")
Fso.MoveFile "Test.txt", "Test2.txt"