嗨,GS。实际上你没有任何错。您使用的是类似如下的脚本,这个脚本使用 LIKE 操作符来搜索计算机上文件名中包含 ~ (这些大多是临时文件)的所有文件:
strComputer = "."
Set objWMIService = GetObject _
("winmgmts://" & strComputer & "/root/cimv2")
Set colFiles = objWMIService.ExecQuery _
("Select * from CIM_DataFile where FileName Like '%~%'")
For Each objFile in colFiles
Wscript.Echo objFile.Name
Next
并且您是对的:这在 Windows XP 和 Windows Server 2003 可以工作得很好,我们鼓励人们都来利用这一新功能,这个功能将是极其有用的。但是,Windows XP 和 Windows Server 2003 是仅有的两个支持 LIKE 操作符的平台,上述脚本在 Windows 2000(或 Windows NT 4.0 和 Windows 98)下就不能工作,因为这些平台不支持 LIKE 操作符。并且,在您提问以前,尚无任何更新旧版 Windows 以便可以支持这一功能的计划发布。很遗憾,我们也希望有这样的计划。
那么,有没有什么变通办法可以解决这个问题呢?有倒是有,但并不十分完美。您所能做的最好程度就是返回计算机上所有文件的列表,然后使用 VBScript 函数 InStr 来检查这些文件名中是否含有腭化符号 (~)。以下脚本可以实现这个目的,为了确保脚本可以运行得快点,我们添加了一个 WHERE 子句,用来将搜索限制在 Scripts 文件夹。否则,这个脚本就会返回计算机上所有文件的列表,这并不是我们在测试情况下所需要的:
strComputer = "."
Set objWMIService = GetObject _
("winmgmts://" & strComputer & "/root/cimv2")
Set colFiles = objWMIService.ExecQuery _
("Select * from CIM_DataFile WHERE Path = '//Scripts//'")
For Each objFile in colFiles
If InStr(objFile.Name,"~") <> 0 Then
Wscript.Echo objFile.Name
End If
Next