objDisk.MediaTypeを確認してください。 HereにはMediaTypesのリストがあります。一見すると、MediaType 1〜10は「通常の」フロッピーを示します。私の(仮想)マシンのクイックチェックで、USBドライブがNullのMediaTypeを示していた(Unknownの場合もゼロではない)ので、注意が必要です。 2番目の一見(注意深い話題):最も定義されたメディアタイプはフロッピー(そのうちのいくつかはエキゾチックなもの)を識別します。ところで - 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のMediaTypeが奇妙な事故かもしれません。私は、 "Select Case True"の制御構造を使ってMediaTypeの評価を簡単にしてみようとしました。 VBScriptは、最初の真となるまでCasesの条件をテストし、対応するステートメントを実行し、End Selectに '中断'します。特別なケースを追加したり、ケースを並べ替えるのは簡単です。最初の位置にIsNullチェックを入れてください。
こんにちはEkkehard.Horner、うまくいった男:) Huuuuuuuuge Thanksありがとう。それは正常に動作しています。あなたは素晴らしいです:)私はあなたのメールをお願いしますか? – Nofuzy