WMI查询CIM_DataFile类返回文件名全小写,如何保留原大小写?
解决WMI查询CIM_DataFile返回文件名小写的问题,同时保留模糊查询能力
WMI的CIM_DataFile类返回的FileName和Extension字段会自动转为小写,但Windows文件系统实际保留了文件名的大小写格式。要同时保留WMI的模糊查询优势和获取正确大小写的文件名,可以结合WMI的查询能力与FileSystemObject(FSO)的文件名读取能力来解决。
解决方案:WMI过滤+FSO获取正确文件名
利用WMI完成模糊查询筛选文件,再通过FSO根据WMI返回的文件路径获取真实大小写的文件名。WMI返回的完整文件路径(objFile.Name属性)虽然文件名部分是小写,但仍能正确指向目标文件,FSO可以通过该路径读取到文件的原始大小写名称。
修改后的脚本示例
' 初始化WMI服务 Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") ' 带模糊查询的WQL语句,保留WMI的筛选能力 requete = "Select * from CIM_DataFile Where Drive = 'M:' and Path ='\Cabinet\Test\' AND FileName like '%EMC%'" set colFiles = objWMIService.ExecQuery(requete) ' 初始化FSO对象 Set oFSO = CreateObject("Scripting.FileSystemObject") ' 遍历查询结果 For Each objFile in colFiles ' 通过WMI返回的完整路径获取FSO文件对象 Set fsoFile = oFSO.GetFile(objFile.Name) ' 输出原始大小写的文件名 Wscript.Echo fsoFile.Name Next
方法说明
- WMI的作用:负责执行复杂的模糊查询(如
like '%IRCANTEC%'),快速筛选出符合条件的文件,这是FSO不具备的高效筛选能力。 - FSO的作用:通过WMI提供的文件路径,读取文件系统中真实的文件名大小写,弥补WMI返回字段小写的缺陷。
为什么WMI会返回小写文件名
这是CIM_DataFile类的设计特性,它在返回FileName和Extension属性时会自动转换为小写格式,但完整的Name属性(包含路径)仍能正确定位到目标文件,因此可以借助FSO来获取原始文件名。
内容的提问来源于stack exchange,提问作者user29417931
相关产品推荐
相关产品推荐

