2013-02-26 76 views
2

我是VBScript的业余爱好者(并且对它的工作方式非常着迷)。我必须在每天的基础上编写某些报告,为此我已经生成了一个脚本来完成这项任务。麻烦的是,我已经为该文件的特定名称生成了该脚本,并且这些报告每天都会附带timedate并在名称中添加少量额外参数。所以,我需要一个vbscript来保存10分钟的日常工作,根据脚本中指定的名称重命名文件。搜索名称中包含特定字符串的文件并将其重命名

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

请帮助我的问题:)

回答

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 

应该正常工作(但我没有测试)。我希望我引发了你的好奇心,并且你会研究这个代码的工作机制。这就是为什么我加入了可以找到文档的链接。

+0

好工作:)谢谢:) 其实我看着代码的机制,并试图使其更有活力。当我尝试使用二维数组变量来做到这一点时,我失败了。不知道为什么。 '昏暗SearchFileName(4,2) SearchFileName(0,0)= “允许KilobyteData”' – 2013-02-26 21:22:38

+0

问题解决:) – 2013-02-26 21:30:51

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