| 一応、自分の備忘録として? _o_
次のような GetFlashDrive.vbs を作成し、実行すると '-------------------------------------------------------------------------- strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk Where DriveType = 2 And MediaType is NULL", , 48)
For Each objItem In colItems FlashDrive = FlashDrive & objItem.DeviceID & "," Next
Call WriteVarFile() WScript.Quit
Sub WriteVarFile() Set objFS = WScript.CreateObject("Scripting.FileSystemObject") Set objTS = objFS.CreateTextFile("FlashDrive.var", True, False) objTS.WriteLine "FlashDrive,文字列,共通," & FlashDrive objTS.Close End Sub '--------------------------------------------------------------------------
カーレントパスに FlashDrive.var と言う、変数ファイル が作成される。 全く Flash ドライブと思われるドライブが存在しない場合は FlashDrive,文字列,共通, と言う中身になるし、 1ドライブがつながった状態では FlashDrive,文字列,共通,E:, 2ドライブがつながった状態では FlashDrive,文字列,共通,E:,F:, と、言うように、ドライブが "," でつながれた状態で 格納される。
この FlashDrive.var を桐で読み込めば、フラッシュ もしくはリムーバブルなドライブを知る事はできると 思います。
今回はあえてフラッシュと言う限定されたものを想定 してみたけれど、MO や取り外し可能な HD なんかは 未確認。
あえて、データ交換したい場合は、データ交換用の メディアはボリュームラベルを交換用の判断名とする とか(判断するための名前を付ける)とか、尾形さんの 書かれた変数ファイルや、あるいは環境変数に、あら かじめ設定しておくとか、あるいは、フラッシュを 差し込むと、自動起動のシステムが働くと思うけれど なんかそういうのを利用するのも手かも知れません。
|