【发布时间】:2009-06-02 23:04:09
【问题描述】:
SELECT 获取有关文件或目录的信息的东西?真正有效的东西?
语言无所谓,我最感兴趣的是查询语法。
【问题讨论】:
SELECT 获取有关文件或目录的信息的东西?真正有效的东西?
语言无所谓,我最感兴趣的是查询语法。
【问题讨论】:
这里有一些例子:
查询文件:
SELECT * FROM CIM_DataFile WHERE Name='C:\\WINDOWS\\NOTEPAD.EXE'
SELECT * FROM CIM_DataFile WHERE Drive='C:' AND Path='\\Windows\\' AND FileName='Notepad' AND Extension='EXE'
查询文件夹:
SELECT * FROM CIM_Directory WHERE Name='C:\\Windows'
SELECT * FROM CIM_Directory WHERE Drive='C:' AND Path='\\Program Files\\' AND FileName='Internet Explorer'
有关查询语法的详细信息,请参阅WQL (SQL for WMI)。另请参阅CIM_DataFile 和CIM_Directory,了解可在SELECT 和WHERE 子句中使用的文件和文件夹属性列表。
【讨论】:
我已经找到了答案,这一切都是由我的一个愚蠢错误引起的:我没有将路径字符串中的反斜杠加倍,并认为它正在完成。此外,您必须在 WHERE 子句中指定所有四个字段:驱动器、路径、文件名和扩展名。
【讨论】:
WMI Code Creator 有一些帮助。
请参阅此代码:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM CIM_DataFile",,48)
For Each objItem in colItems
Wscript.Echo "-----------------------------------"
Wscript.Echo "CIM_DataFile instance"
Wscript.Echo "-----------------------------------"
Wscript.Echo "AccessMask: " & objItem.AccessMask
Wscript.Echo "Archive: " & objItem.Archive
Wscript.Echo "LastAccessed: " & objItem.LastAccessed
Wscript.Echo "LastModified: " & objItem.LastModified
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Path: " & objItem.Path
Wscript.Echo "Readable: " & objItem.Readable
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo "System: " & objItem.System
Wscript.Echo "Version: " & objItem.Version
Wscript.Echo "Writeable: " & objItem.Writeable
Next
编辑
这个样本是你正在寻找的Enumerating All the Files on a Computer。
试试这种查询格式:
Select * From Win32_Directory Where FileName = 'Scripts'
这里有更多关于查询WQL using LIKE的信息。
也试试这个:Scriptomatic 2.0 。
【讨论】: