搜索名称中包含特定字符串的文件并重命名

时间:2013-02-26 09:30:13

标签: vbscript file-rename

我是VBScript的业余爱好者(并且非常着迷于它的工作方式;))。我必须每天处理某些报告,我已经生成了一个脚本来完成任务。麻烦的是我已经为特定的文件名生成了该脚本,这些报告每天都附带时间日期,并且在名称中添加了一些额外的参数。因此,我需要一个vbscript来保存我根据脚本中指定的名称重命名文件的10分钟日常工作。

例如D:/reports/有文件AMR KilobyteData_23022013_4399_223.xls我想将其重命名为AMR KilobyteData.xls。而已 ! :)

请帮我解决这个问题:)

2 个答案:

答案 0 :(得分:2)

首先使用如下脚本遍历文件夹中的所有文件:

Dim fso, folder, file
Dim folderName, searchFileName, renameFileTo

' Parameters
folderName     = "D:\reports\"
searchFileName = "AMR KilobyteData"
renameFileTo   = "AMR KilobyteData.xls"

' Create filesystem object and the folder object
' how the FSO works: http://msdn.microsoft.com/en-us/library/2z9ffy99(v=vs.84).aspx
Set fso = CreateObject("Scripting.FileSystemObject")  
Set folder = fso.GetFolder(folderName)  

' Loop over all files in the folder until the searchFileName is found
For each file In folder.Files    
    ' See if the file starts with the name we search
    ' how instr works: http://www.w3schools.com/vbscript/func_instr.asp
    If instr(file.name, searchFileName) = 1 Then
        file.name = renameFileTo
        ' Exit the loop, we only want to rename one file
        Exit For
    End If
Next

它应该正常运行(但我没有测试它)。我希望我能引起你的好奇心,你会研究这段代码的工作原理。这就是为什么我放入可以找到文档的链接。

答案 1 :(得分:1)

您要删除的信息是否始终位于文件名中的第一个下划线之后?如果是这样,你可以这样做:

Set fso = CreateObject("Scripting.FileSystemObject")

For Each f In fso.GetFolder("D:\reports").Files
  pos = InStr(f.Name, "_")
  If pos > 0 Then
    newName = Left(f.Name, pos-1) & "." & fso.GetExtensionName(f.Name)
    f.Move fso.BuildPath(f.ParentFolder, newName)
  End If
Next