SQL Query仅在本地驱动器上选择具有特定扩展名的文件

时间:2014-07-24 13:30:31

标签: sql wmi wmi-query

我正在寻找一种方法,只能从WMI数据库中获取本地驱动器上具有特定扩展名的文件。

SELECT * 
FROM CIM_DataFile 
WHERE Extension = 'vbs' 
      AND Drive = UCASE(SELECT Caption 
                        FROM Win32_LogicalDisk 
                        WHERE Description = 'Local Fixed Disk')

我在上面提出了这个想法,但它没有返回任何结果。如果我做错了或者有更简单的方法可以让我知道。

2 个答案:

答案 0 :(得分:0)

所以我试图找到一种方法在WMI上使用JOININ操作但没有成功。然后我发现这个WQL (SQL for WMI)似乎显示了WMI查询允许的操作。

因此,执行此操作的唯一方法就是使用以下两个查询:

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select name from "&_
                           " Win32_LogicalDisk where MediaType <> 0",,48)

For Each objItem in colItems

    Set colItems2 = objWMIService.ExecQuery("Select * " &_ 
                                            "  from CIM_DataFile " &_ 
                                            " where Extension='vbs' " &_
                                            "   and Drive ='" & objItem.Name & "' ",,48)

    For Each objItem2 in colItems2
        Wscript.Echo "Extension: " & objItem2.Extension
        Wscript.Echo "FileName: " & objItem2.FileName
        Wscript.Echo "FileSize: " & objItem2.FileSize
        Wscript.Echo "FileType: " & objItem2.FileType
        Wscript.Echo "Name: " & objItem2.Name
        Wscript.Echo "#################################################"
    Next

Next

当我使用WMI时,我发现了一个很有用的简单工具,它只是一个名为ScriptomaticV2的HTA文件。你可以在Microsoft Download Center Scriptomatic 2.0找到它。这是一个自解压文件。

答案 1 :(得分:-1)

尝试这样的事情:

SELECT CASE
WHEN RIGHT(RTRIM(FileName), 4) = '.vbs' THEN FileName
END
FROM CIM_DataFile 

确保更改规格的参数名称。