开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3968|回复: 24
收起左侧

[易语言纯源码] 文件_枚举WEx,携带信息文件名段文件名尺寸创建时间等

[复制链接]
发表于 2021-12-29 17:32:33 | 显示全部楼层 |阅读模式   辽宁省鞍山市
本帖最后由 琪诺兔 于 2021-12-29 17:34 编辑
  
子程序名返回值类型公开备 注
文件_枚举WEx整数型 枚举某个目录下的指定类型文件,成功返回数量。注意本程序为了多路径累积枚举,不会对数组进行清除,有必要请自行处理数组
参数名类 型参考可空数组备 注
欲寻找的目录字节集欲寻找的目录
欲寻找的文件名字节集莫认为为寻找全部文件。如果使用请按照过滤器规范设定
枚举子目录逻辑型是否检查子目录里的内容
从零开始逻辑型设置为真,记次将会被清零。否则每次枚举返回的数量将会累积。用于建立索引
文件名组字节集
短文件名组字节集
路径组字节集
尺寸组字节集
创建时间组字节集
修改时间组字节集
访问时间组字节集
变量名类 型静态数组备 注
计数整数型 
找到文件信息文件信息 
日期时系统时间戳 
被寻找路径字节集 
欲寻找文件名字节集 
枚举句柄整数型 
文件名称字节集 
格式字节集 
下一个逻辑型 
子目录字节集 
尺寸字节集 
被寻找路径 = 删尾零W (欲寻找的目录)
如果真 (从零开始)
计数 = 0
如果真 (取字节集右边 (被寻找路径, 2){ 92, 0 })
被寻找路径 = 被寻找路径 + { 92, 0 }
如果真 (是否为空 (欲寻找的文件名))
欲寻找的文件名 = { 42, 0 }
欲寻找文件名 = 删尾零W (欲寻找的文件名)
枚举句柄 = 枚举第一个文件W (被寻找路径 + 欲寻找文件名 + { 0, 0 }, 找到文件信息)
如果真 (枚举句柄 = #INVALID_HANDLE_VALUE )
返回 ( #INVALID_HANDLE_VALUE )
循环判断首 ()
文件名称 = 删尾零W (到字节集 (找到文件信息.文件名))
如果真 (取字节集左边 (格式, 2){ 0, 0 })
取字节集左边 (格式, 取字节集长度 (格式) - 2)
格式 = 删尾零W (到字节集 (找到文件信息.类型))
如果真 (比较字节 (文件名称 + { 0, 0 }, { 46, 0, 0, 0 })#NULL 比较字节 (文件名称 + { 0, 0 }, { 46, 0, 46, 0, 0, 0 })#NULL )
如果真 (枚举子目录 位与 (找到文件信息.文件属性, #FILE_ATTRIBUTE_DIRECTORY )#NULL )
子目录 = 被寻找路径 + 文件名称 + { 92, 0 }
文件_枚举WEx (子目录, 欲寻找的文件名)
如果真 (位与 (找到文件信息.文件属性, #FILE_ATTRIBUTE_ARCHIVE )#NULL )
文件名称 = 文件名称 + { 0, 0 }
计数 = 计数 + 1
如果真 (是否为空 (文件名组))
加入成员 (文件名组, 文件名称)
如果真 (是否为空 (短文件名组))
判断 (格式 = {  })
加入成员 (短文件名组, 文件名称)
加入成员 (短文件名组, 格式 + { 0, 0 })

如果真 (是否为空 (路径组))
加入成员 (路径组, 被寻找路径 + 文件名称)
如果真 (是否为空 (尺寸组))
尺寸 = 取空白字节集 (32)
长度格式化文本W (取字节集数据 (到字节集 (找到文件信息.长度低位)到字节集 (找到文件信息.长度高位), #长整数型, ), 尺寸, 16)
加入成员 (尺寸组, 尺寸)
如果真 (是否为空 (创建时间组))
文件时间转系统时间戳 (找到文件信息.创建时间, 日期时)
加入成员 (创建时间组, 系统时间到文本 (日期时))
如果真 (是否为空 (修改时间组))
文件时间转系统时间戳 (找到文件信息.修改时间, 日期时)
加入成员 (修改时间组, 系统时间到文本 (日期时))
如果真 (是否为空 (访问时间组))
文件时间转系统时间戳 (找到文件信息.访问时间, 日期时)
加入成员 (访问时间组, 系统时间到文本 (日期时))


下一个 = 枚举下一个文件W (枚举句柄, 找到文件信息)
循环判断尾 (下一个)
关闭枚举 (枚举句柄)
返回 (计数)
子程序名返回值类型公开备 注
系统时间到文本字节集 
参数名类 型参考可空数组备 注
SYSTEMTIMESYSTEMTIME
变量名类 型静态数组备 注
文本文本型 
回调字节集 
长度整数型 
文本 = 到文本 (SYSTEMTIME.年)“/”到文本 (SYSTEMTIME.月)“/”到文本 (SYSTEMTIME.日)“ ”到文本 (SYSTEMTIME.时)“:”到文本 (SYSTEMTIME.分)“:”到文本 (SYSTEMTIME.秒)“:”到文本 (SYSTEMTIME.毫)
长度 = 转换文字列_AToU (0, 0, 文本, -1, {  }, 0)
回调 = 取空白字节集 (长度 × 2)
转换文字列_AToU (936, 0, 文本, -1, 回调, 长度 × 2)
返回 (回调)
子程序名返回值类型公开备 注
删尾零W字节集 
参数名类 型参考可空数组备 注
欲被处理的字节集字节集
变量名类 型静态数组备 注
i整数型 
i = 寻找字节集 (欲被处理的字节集, { 0, 0 }, )
如果真 (i ≠ -1)
如果真 (i % 2 ≠ 0)
i = i - 1
返回 (取字节集左边 (欲被处理的字节集, i))
返回 (欲被处理的字节集)
  
DLL命令名返回值类型公开备 注
文件时间转系统时间戳逻辑型 0
DLL库文件名:
kernel32.dll
在DLL库中对应命令名:
FileTimeToSystemTime
参数名类 型传址数组备 注
文件时间文件时间0
文件时间系统时间戳0
DLL命令名返回值类型公开备 注
枚举下一个文件W逻辑型 
DLL库文件名:
kernel32.dll
在DLL库中对应命令名:
FindNextFileW
参数名类 型传址数组备 注
hFindFile整数型
lpFindFileData文件信息
DLL命令名返回值类型公开备 注
关闭枚举逻辑型 
DLL库文件名:
kernel32
在DLL库中对应命令名:
FindClose
参数名类 型传址数组备 注
hFindFile整数型0
DLL命令名返回值类型公开备 注
比较字节整数型 
DLL库文件名:
ntdll.dll
在DLL库中对应命令名:
@wcscmp
参数名类 型传址数组备 注
String1字节集
String2字节集
DLL命令名返回值类型公开备 注
枚举第一个文件W整数型 0
DLL库文件名:
kernel32.dll
在DLL库中对应命令名:
FindFirstFileW
参数名类 型传址数组备 注
lpFileName字节集
lpFindFileData文件信息
DLL命令名返回值类型公开备 注
长度格式化文本W整数型 文件_格式化字节Ex
DLL库文件名:
shlwapi.dll
在DLL库中对应命令名:
StrFormatByteSizeW
参数名类 型传址数组备 注
数值长整数型qdw
文本缓冲区字节集szBuf
文本缓冲区大小整数型uiBufSize
DLL命令名返回值类型公开备 注
转换文字列_AToU整数型 
DLL库文件名:
 
在DLL库中对应命令名:
MultiByteToWideChar
参数名类 型传址数组备 注
CodePage整数型
dwFlags整数型
lpMultiByteStr文本型
cchMultiByte整数型
lpWideCharStr字节集
cchWideChar整数型

  
数据类型名公开备 注
文件信息 
成员名类 型传址数组备 注
文件属性整数型  
创建时间文件时间  
修改时间文件时间  
访问时间文件时间  
长度高位整数型  
长度低位整数型  
保留0整数型  
保留1整数型  
文件名字节型 520
类型字节型 28
数据类型名公开备 注
文件时间 
成员名类 型传址数组备 注
时间低位整数型  
时间高位整数型  
数据类型名公开备 注
系统时间戳 , SYSTEMTIME
成员名类 型传址数组备 注
短整数型 wYear
短整数型 wMonth
星期短整数型  
短整数型 wDay
短整数型 wHour
短整数型 wMinute
短整数型 wSecond
短整数型 wMilliseconds


A[1A5WFVYYPB_WT`BDA@~7A.png

评分

参与人数 2精币 +4 收起 理由
ghost12 + 1 支持开源~!感谢分享
maozaiba + 3 奉上小小红包希望笑纳

查看全部评分


本帖被以下淘专辑推荐:

发表于 2023-6-6 15:20:59 | 显示全部楼层   黑龙江省牡丹江市
感谢分享666666666666
回复 支持 反对

使用道具 举报

结帖率:42% (5/12)

签到天数: 1 天

发表于 2023-3-9 21:12:51 | 显示全部楼层   黑龙江省哈尔滨市
优秀! 但是还是你之前开源的 everyting 比较厉害,虽然你没完成它。。
回复 支持 反对

使用道具 举报

发表于 2022-10-8 09:53:01 | 显示全部楼层   四川省绵阳市
谢谢
回复 支持 反对

使用道具 举报

发表于 2022-8-24 21:18:36 | 显示全部楼层   江苏省泰州市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-24 19:54:04 | 显示全部楼层   辽宁省鞍山市
寻找星空 发表于 2022-8-24 18:17
数组520,28是否固定?

你好,是的FindFirstFileW,返回的结构文件信息,尾部的两个字节素组,文件名素组根据微软文档,是一个长度唯520的缓冲区,按道理来说不全部读入是可能的,但很难断定,扩展名的起始位置,所以干脆全部取出,自己处理尾0,扩展名同理

评分

参与人数 1好评 +1 精币 +1 收起 理由
寻找星空 + 1 + 1 非常不错,

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:100% (13/13)

签到天数: 1 天

发表于 2022-8-24 18:17:18 | 显示全部楼层   广东省清远市
数组520,28是否固定?
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 2 天

发表于 2022-8-24 08:32:44 | 显示全部楼层   江苏省苏州市
感谢分享,学习
回复 支持 反对

使用道具 举报

结帖率:81% (26/32)
发表于 2022-5-1 11:02:27 | 显示全部楼层   上海市上海市
感谢你的支持,精易有你更精彩
回复 支持 反对

使用道具 举报

结帖率:81% (26/32)
发表于 2022-2-28 21:00:57 | 显示全部楼层   上海市上海市
互相讨论,共同进步
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表