2011-05-04 51 views
0

请找到代码:保存一个带有一个字母前缀的新文件

问题是该文件夹有一个很大的编号。的文件

 
===================================================================================== 
Dim fso, objFolder, obFileList, folderpath,counter 

folderpath = "G:\Everyone\Model Office Testing Documents\HP QC\QTP\PSISAutomation\Logs" 

Set fso = CreateObject("Scripting.FileSystemObject") 

Set objFolder = fso.GetFolder(folderpath) 

Set objFileList = objFolder.Files 


For Each File In objFileList 
    msgbox("5") 
    If InStr(1,File.Name,"DE_For_Pol_Print_APPA_7A_Copy_") = 1 Then   
     counter=counter+1 
    End If 
Next 

counter=counter+1 
msgbox("new file will be saved as: " &"DE_For_Pol_Print_APPA_7A_Copy_"& Chr(64 + Counter)) 

+1

为什么这是一个问题(大量的文件)? – forsvarir 2011-05-04 11:19:42

+0

该文件夹存在于网络位置,并且它具有较大的编号。文件......循环需要很多时间对于每个文件在objFileList msgbox(“5”)如果InStr(1,File.Name,“DE_For_Pol_Print_APPA_7A_Copy_”)= 1然后 counter = counter + 1 End If Next – Guri 2011-05-04 11:26:18

+0

在这里问什么? – Cheeso 2011-05-04 19:14:59

回答

0

不要使用FSO,但利用WMI的,你把文件名中的SELECT语句,如:"DE_For_Pol_Print_APPA_7A_Copy_%"。这应该只返回一个带有所需文件名的文件的集合(比全部集合更快)。

有文件集没有计数属性,但你可以使用:

For Each file in fileCollection 
    counter = counter + 1 
Next 

这将不能访问内部文件对象,应该运行相当快。

第二个甚至更快(但更丑陋的imo)技术是使用来自windowshell对象的命令提示符并将dir返回到输出。输出只是一个字符串。现在,计算所需字符串的匹配数量(DE_For_Pol_Print_APPA_7A_Copy_),这就是您的计数器。

准确的代码留作空白,作为海报的练习。