删除多个USB驱动器VBS上的文件夹

时间:2016-09-26 01:56:57

标签: vbscript usb-drive

我希望同时删除多个USB驱动程序上的文件夹。

sDeleteFolder = "\Test"
Set oFS = CreateObject("Scripting.FileSystemObject")
Set dUSBKeys = ScanForUSBKeys()
For Each oUSBKey in dUSBKeys.Keys
    If Left(oUSBKey, 1) = "\" Then
       sKey = oUSBKey
    Else
        sKey = oUSBKey & "\"
    End If
    oFS.DeleteFolder sdeleteFolder, sKey
Next
Set dUSBKeys = Nothing
Set oFS = Nothing

 MsgBox "Done Del all the folder from USB Drivs", vbOKOnly+VBINformation+VBSystemModal, "DONE"
Function ScanForUSBKeys()
    Set oWMI = GetObject("winmgmts:\\.\root\cimv2")
    Set dTemp = CreateObject("Scripting.Dictionary")
Set cDisks = oWMI.ExecQuery("Select InterfaceType,MediaType,PNPDeviceID,DeviceID,Size from Win32_DiskDrive")
For Each oDisk in cDisks
    If InStr(LCase(oDisk.InterfaceType),"usb") > 0 AND InStr(LCase(oDisk.MediaType),"removable") > 0 _
      AND InStr(LCase(oDisk.PNPDeviceID),"blackberry") = 0 AND InStr(LCase(oDisk.PNPDeviceID),"ipod") = 0 _
      AND NOT oDisk.PNPDeviceID = "" Then
        Set cDrivePartitions = oWMI.ExecQuery("ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" & _
                              oDisk.DeviceID & "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition" )
        For Each oDrivePartition in cDrivePartitions
            Set cDriveLetters = oWMI.ExecQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" & _
                                oDrivePartition.DeviceID & "'} WHERE AssocClass = Win32_LogicalDiskToPartition")
            For Each oDriveLetter in cDriveLetters
                dTemp.Add oDriveLetter.DeviceID, 1
            Next
            Set cDriveLetters = Nothing
        Next
        Set cDrivePartitions = Nothing
    End If
Next
Set cDisks = Nothing
Set ScanForUSBKeys = dTemp
Set dTemp = Nothing
Set oWMI = Nothing
End Function

我一直收到错误:

 Type mismatch: 'oFs.DeleteFolder'  
 Line 12   Char 5

2 个答案:

答案 0 :(得分:0)

  1. 研究.DeleteFolder
  2. 的文档
  3. 确保在调用Sub时传递完整路径(不仅仅是“\ test”)和相应的布尔值(不是像oUSBKey这样的字符串)
  4. 使用.BuildPath构建完整路径
  5. 使用VBScript的优点。例如:Option Explicit,将sPath声明为Const
  6. 不要徒劳地使用Set x = Nothing

答案 1 :(得分:0)

试试此代码

sDeleteFolder = "\Test"
For Each oUSBKey in dUSBKeys.Keys
    sKey = oUSBKey & sDeleteFolder
    oFS.DeleteFolder sKey
Next