2

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

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

请帮我解决这个问题:)

4

2 回答 2

2

您要删除的信息是否总是出现在文件名中的第一个下划线之后?如果是这样,您可以执行以下操作:

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
于 2013-02-26T10:29:42.537 回答
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

它应该可以正常运行(但我没有测试它)。我希望我引发了您的好奇心,您将研究此代码的工作机制。这就是为什么我把可以找到文档的链接放在里面。

于 2013-02-26T10:25:42.180 回答