检测USB和软盘驱动器';通过VBScript发送的信件
我有一个Vb脚本,它将所有可移动驱动器的字母存储到一个变量中,正如您所知,它包含软盘驱动器和USB驱动器,我想将它们分开,我的意思是我想将USB驱动器的字母存储在一个变量中,将软盘驱动器的字母存储到另一个变量中 以下是脚本:检测USB和软盘驱动器';通过VBScript发送的信件,vbscript,drives,Vbscript,Drives,我有一个Vb脚本,它将所有可移动驱动器的字母存储到一个变量中,正如您所知,它包含软盘驱动器和USB驱动器,我想将它们分开,我的意思是我想将USB驱动器的字母存储在一个变量中,将软盘驱动器的字母存储到另一个变量中 以下是脚本: strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\r
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk")
Removable = ""
For Each objDisk in colDisks
if objDisk.DriveType = 2 then
if Removable > "" then
Removable = Removable & ";"
end if
Removable = Removable & objDisk.DeviceID & "\"
end if
Next
我正在使用一个可以调用VBScript的软件。但它只支持像我发布的那样的一些类型。那我该怎么做呢
提前感谢。检查objDisk.MediaType。您将找到一个媒体类型列表;乍一看,MediaType 1。。。10表示“正常”软盘;在我的(虚拟)机器上的快速检查中,一个USB驱动器显示了一个空的MediaType(对于未知,甚至不是零),所以你必须小心。再看一眼(谈论谨慎):大多数定义的媒体类型都会识别软盘(其中一些是外来的)。顺便问一下,USB软盘驱动器呢
由于我无法在“真实”计算机上进行测试,因此您必须仔细检查以下代码:
Const cnRemovableDisk = 2
Const cnMTypeUnknown = 0
Const cnMTypeNoFloppy = 11
Const cnMTypeFixedHD = 12
Dim strComputer : strComputer = "."
Dim objWMIService : Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Dim colDisks : Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk")
Dim Removable : Removable = ""
Dim Floppy : Floppy = ""
Dim USBDrive : USBDrive = ""
Dim objDisk
For Each objDisk in colDisks
If objDisk.DriveType = cnRemovableDisk Then
Removable = Removable & ";" & objDisk.DeviceID & "\"
Select Case True
Case IsNull( objDisk.MediaType )
WScript.Echo objDisk.DeviceID, "has MediaType null - assuming USB Drive."
USBDrive = USBDrive & ";" & objDisk.DeviceID & "\"
Case objDisk.MediaType = cnMTypeNoFloppy
WScript.Echo objDisk.DeviceID, "has MediaType 11 - assuming USB Drive."
USBDrive = USBDrive & ";" & objDisk.DeviceID & "\"
Case objDisk.MediaType = cnMTypeUnknown
WScript.Echo objDisk.DeviceID, "has MediaType 0 - assuming USB Drive."
USBDrive = USBDrive & ";" & objDisk.DeviceID & "\"
Case objDisk.MediaType = cnMTypeFixedHD
WScript.Echo objDisk.DeviceID, "has MediaType 12 - how can this happen?"
Case Else
WScript.Echo objDisk.DeviceID, "has MediaType", objDisk.MediaType, " - surely some kind of floppy."
Floppy = Floppy & ";" & objDisk.DeviceID & "\"
End Select
End If
Next
Removable = Mid( Removable, 2 )
Floppy = Mid( Floppy , 2 )
USBDrive = Mid( USBDrive , 2 )
WScript.Echo "Removable:", Removable
WScript.Echo "Floppy: ", Floppy
WScript.Echo "USBDrive: ", USBDrive
我的输出是:
A: has MediaType 5 - surely some kind of floppy.
F: has MediaType null - assuming USB Drive.
Removable: A:\;F:\
Floppy: A:\
USBDrive: F:\
我的USBDrive的空媒体类型可能是一个奇怪的意外。我试图通过使用“selectcaseTrue”控制结构来简化对MediaType的评估。VBScript将测试案例的条件,直到第一个为真,执行相应的语句,并“中断”到结束选择。因此,添加特殊案例和/或重新排序案例非常简单-只需在第一个位置保留IsNull检查。检查objDisk.MediaType。您将找到一个媒体类型列表;乍一看,MediaType 1。。。10表示“正常”软盘;在我的(虚拟)机器上的快速检查中,一个USB驱动器显示了一个空的MediaType(对于未知,甚至不是零),所以你必须小心。再看一眼(谈论谨慎):大多数定义的媒体类型都会识别软盘(其中一些是外来的)。顺便问一下,USB软盘驱动器呢
由于我无法在“真实”计算机上进行测试,因此您必须仔细检查以下代码:
Const cnRemovableDisk = 2
Const cnMTypeUnknown = 0
Const cnMTypeNoFloppy = 11
Const cnMTypeFixedHD = 12
Dim strComputer : strComputer = "."
Dim objWMIService : Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Dim colDisks : Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk")
Dim Removable : Removable = ""
Dim Floppy : Floppy = ""
Dim USBDrive : USBDrive = ""
Dim objDisk
For Each objDisk in colDisks
If objDisk.DriveType = cnRemovableDisk Then
Removable = Removable & ";" & objDisk.DeviceID & "\"
Select Case True
Case IsNull( objDisk.MediaType )
WScript.Echo objDisk.DeviceID, "has MediaType null - assuming USB Drive."
USBDrive = USBDrive & ";" & objDisk.DeviceID & "\"
Case objDisk.MediaType = cnMTypeNoFloppy
WScript.Echo objDisk.DeviceID, "has MediaType 11 - assuming USB Drive."
USBDrive = USBDrive & ";" & objDisk.DeviceID & "\"
Case objDisk.MediaType = cnMTypeUnknown
WScript.Echo objDisk.DeviceID, "has MediaType 0 - assuming USB Drive."
USBDrive = USBDrive & ";" & objDisk.DeviceID & "\"
Case objDisk.MediaType = cnMTypeFixedHD
WScript.Echo objDisk.DeviceID, "has MediaType 12 - how can this happen?"
Case Else
WScript.Echo objDisk.DeviceID, "has MediaType", objDisk.MediaType, " - surely some kind of floppy."
Floppy = Floppy & ";" & objDisk.DeviceID & "\"
End Select
End If
Next
Removable = Mid( Removable, 2 )
Floppy = Mid( Floppy , 2 )
USBDrive = Mid( USBDrive , 2 )
WScript.Echo "Removable:", Removable
WScript.Echo "Floppy: ", Floppy
WScript.Echo "USBDrive: ", USBDrive
我的输出是:
A: has MediaType 5 - surely some kind of floppy.
F: has MediaType null - assuming USB Drive.
Removable: A:\;F:\
Floppy: A:\
USBDrive: F:\
我的USBDrive的空媒体类型可能是一个奇怪的意外。我试图通过使用“selectcaseTrue”控制结构来简化对MediaType的评估。VBScript将测试案例的条件,直到第一个为真,执行相应的语句,并“中断”到结束选择。因此,添加特殊案例和/或重新排序案例非常简单-只需在第一个位置保留IsNull检查。您也可以尝试此查询
set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk Where DriveType=2")
有关更多详细信息,请查看链接。祝您好运您也可以尝试此查询
set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk Where DriveType=2")
有关更多详细信息,请查看链接。祝你好运。霍纳,干得好。谢谢。它工作得很好。你很棒:)你能把你的邮件给我吗?嗨,埃克哈德。霍纳,干得好男人:)谢谢。它工作得很好。你太棒了:)你能把你的邮件给我吗?