遍历指定盘符下的所有文件及文件夹并获取所有信息,欢迎交流提速!
本代码学习了网上前辈和吹版的代码,再次向他们表示感谢和敬意!
程序代码:********************************************************************************
***功能:遍历指定盘符下的所有文件及文件夹,并获取所有相关信息。
***文件名: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编辑过]



