遍历指定盘符下的所有文件及文件夹并获取所有信息,欢迎交流提速!
本代码学习了网上前辈和吹版的代码,再次向他们表示感谢和敬意!程序代码:
******************************************************************************** ***功能:遍历指定盘符下的所有文件及文件夹,并获取所有相关信息。 ***文件名:ScanFile.Prg ***调用格式:ScanFile('D:') ******************************************************************************** PARAMETERS cDrvmc cDrvmc=UPPER(ALLTRIM(cDrvmc)) nOldsec=SECONDS( ) ? '磁盘[ '+cDrvmc+' ]开始扫描...',DATETIME() DIMENSION Myarrtol(1,5) &&定义总数组 Myarrtol(1,1)=cDrvmc Myarrtol(1,2)='' Myarrtol(1,3)=DATE() Myarrtol(1,4)=TIME() Myarrtol(1,5)='....D' nArrlen=ALEN(Myarrtol,1) &&总数组的长度 nIarr=1 DO WHILE nIarr<=nArrlen &&开始扫描指定磁盘 IF 'D'$Myarrtol(nIarr,5) &&是不是目录 nNum=ADIR(Myarrtmp,Myarrtol(nIarr,1)+'*.*','RASHD') &&获取指定目录下所有信息 IF nNum#0 DIMENSION Myarrtol(nArrlen+nNum+IIF(nIarr<=1,0,-2),5) &&重新定义总数组 FOR I=IIF(nIarr<=1,1,3) TO nNum &&记录全路径并将新获取数据添加到总数组中,除根目录外跳过.和.. Myarrtmp(I,1)=Myarrtol(nIarr,1)+Myarrtmp(I,1)+IIF('D' $ Myarrtmp(I,5),'\','') &&获取全路径 * WAIT WINDOW [color=#FF0000]'正在搜索:'+DISPLAYPATH(ALLTRIM(Myarrtmp(I,1)),100) NOWAIT &&显示扫描对象[/color] FOR nI=1 TO 5 Myarrtol(nArrlen+IIF(nIarr<=1,I,I-2),nI)=Myarrtmp(i,nI) &&将获取指定目录下的所有信息添加至总数组 ENDFOR ENDFOR ENDIF RELEASE Myarrtmp ENDIF nArrlen=ALEN(Myarrtol,1) nIarr=nIarr+1 ENDDO ? '共找到[ '+TRANSFORM(ALEN(Myarrtol,1))+' ]条数据!' ? '扫描磁盘用时[ '+TRANSFORM(SECONDS()-nOldsec)+' ]秒!' CREATE CURSOR Mydbf (wjmc C(254),wjcd N(20),wjrq D,wjshj C(10),wjsx C(6)) &&创建游标 APPEND FROM ARRAY Myarrtol &&将总数组数据添加至游标中 &&获取了指定硬盘下的所有文件及文件夹信息后即可做任何处理,这个要看你想做什么了?呵呵...
1.红色行如果执行的话,会大大降低速度,建议不显示为好!
2.可以把自己需要的条件加入代码中,即可满足自己的需要!
3.正在完善获取每个文件的文件版本等相关信息,可提供更加全面的数据支持。
总结:用数组保存数据,提高了速度!具体速度自己测试吧,欢迎回复测试结果!谢谢!
[此贴子已经被作者于2018-7-23 23:41编辑过]