我是VBScript的业余爱好者(并且非常着迷于它的工作方式;))。我必须每天处理某些报告,我已经生成了一个脚本来完成任务。麻烦的是我已经为特定的文件名生成了该脚本,这些报告每天都附带时间日期,并且在名称中添加了一些额外的参数。因此,我需要一个vbscript来保存我根据脚本中指定的名称重命名文件的10分钟日常工作。
例如D:/reports/
有文件AMR KilobyteData_23022013_4399_223.xls
我想将其重命名为AMR KilobyteData.xls
。而已 ! :)
请帮我解决这个问题:)
答案 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