使用WMI

时间:2015-10-13 12:25:04

标签: windows vbscript wmi

我正在使用在本地磁盘中查找指定文件的脚本。当找到该文件时,它会重命名/删除接近指定文件的文件。 (我的意思是在同一目录等)

示例代码:

Sub RenameFolder( oldName, newName )
    Dim filesys
    Set filesys = WScript.CreateObject("Scripting.FileSystemObject")

    If filesys.FolderExists( oldName ) Then
        filesys.MoveFolder oldName, newName
    End If
End Sub

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile Where Filename = 'myfile' and Extension = 'exe'")

For Each objFile in colFiles

RenameFolder objFile.Drive & objFile.Path & "files\test",  objFile.Drive & objFile.Path & "files\test_old"

我想添加一个条件,它会检查是否在与myfile.exe相同的目录中,还有另一个名为otherfile.exe的文件。

如果它在那里 - 不做任何事情,否则 - 重命名指定的文件夹,如上面的代码。

1 个答案:

答案 0 :(得分:0)

您正在寻找的是FileExists方法。以下是我建议您在代码中使用它的方法:

Sub RenameFolder( oldName, newName )
    Dim filesys
    Set filesys = WScript.CreateObject("Scripting.FileSystemObject")

    If filesys.FolderExists( oldName ) Then
        filesys.MoveFolder oldName, newName
    End If
End Sub

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile Where Filename = 'myfile' and Extension = 'exe'")

For Each objFile in colFiles
    If Not filesys.FileExists(objFile.Drive & objFile.Path & "otherfile.exe") Then
        'No else clause needed since we are checking if the file _doesn't_ exist.
        RenameFolder objFile.Drive & objFile.Path & "files\test",  objFile.Drive & objFile.Path & "files\test_old"
    End If
Next

编辑:改变我的例子,直接在提问者的代码中工作。