最近看到论坛有人发文件搜索工具,想起自己4版本的时候也写过,兴起就搬到了5版本上.主要只是应用并展示Tui界面
本搜索工具支持*和?两个windows通配符.
左侧树形框为目录区,右侧列表框为文件区
双击目录树可以展开该目录
由于列表框没有优化,面对大量数据连续添加时,效率低下.因此,
当双击目录树(双击目录树会引发枚举该目录文件)或者搜索结果数量非常多时,可能长时间出现无响应的问题,请耐心等待.
因为支持通配符意味着可以诸如*.*或者*.exe之类的模糊条件搜索,这可能会导致枚举到巨量数据.枚举结束时大量数据持续涌入列表框将严重拖慢整个程序,因此,
强烈建议:搜索文件尽可能提供完整目标文件名,尽量不要使用*.*之类的语句!!除非你非常有耐心...(我试过*.*枚举所有盘区,闹了45分钟还没完事.)
双击右侧文件名可以直接打开该文件所在目录并定位该文件.
以下是搜索核心代码
- function 递归过程(路径,文件名,&最终结果)
- var 文件,文件夹,数量,tmp
- 文件遍历(路径,文件,文件夹)
- 数量=数组大小(文件)
- for(var i = 0; i < 数量; i++)
- tmp=字符串转小写(文件[i])
- if(dllcall("shlwapi.dll","int","PathMatchSpecW","wchar *",文件[i],"wchar *",文件名)!=0)
- 数组增加元素(最终结果,array(路径,文件[i]),null)
- end
- end
- 数量=数组大小(文件夹)
- for(var i = 0; i < 数量; i++)
- tmp=字符串修剪(文件夹[i])
- if(tmp!="")
- 递归过程(路径&"\"&文件夹[i],文件名,最终结果)
- end
- end
- return 数组大小(最终结果)
- end
复制代码 其中的PathMatchSpecW是支持通配符的关键函数
|