BrianTX
|
(Korg Regular)
|
2002-06-19 05:57 PM
|
|
|
|
|
Drive enumeration
|
|
Someone recently had a question about detecting which drive was the CD-ROM. Here is a script to do that:
code:
$fso = CreateObject("Scripting.FileSystemObject") $drives = $fso.Drives For each $drive in $drives If $drive.DriveType = 4 $drive.DriveLetter " is a CD-ROM" Endif Next
To enumerate all drives, use:
code:
$fso = CreateObject("Scripting.FileSystemObject") $drives = $fso.Drives For each $drive in $drives $Dtype = $drive.DriveType Select Case $Dtype = 0 $type = "Unknown" Case $Dtype = 1 $type = "Removable" Case $Dtype = 2 $type = "Fixed" Case $Dtype = 3 $type = "Network" Case $Dtype = 4 $type = "CD-ROM" Case $Dtype = 5 $type = "RAM Disk"
EndSelect
"The " + $drive.driveletter + " drive is of type " + $type + "." ? Next
Brian
|
cj
|
(MM club member)
|
2002-06-20 04:32 AM
|
|
|
|
|
Re: Drive enumeration
|
|
It's lunchtime here
code:
$aTypes="Unknown","Removable","Fixed","Network","CD-ROM","RAM Disk" for each $oDrive in CreateObject("Scripting.FileSystemObject").Drives "The " $oDrive.DriveLetter " drive is of type " $aTypes[$oDrive.DriveType] "." ? next
cj
|
Les
|
(KiX Master)
|
2002-06-20 04:43 AM
|
|
|
|
|
Re: Drive enumeration
|
|
In the spirit of one-upmanship...
KixGolf score = 211
Cool!
|
cj
|
(MM club member)
|
2002-06-20 05:35 AM
|
|
|
|
|
Re: Drive enumeration
|
|
KiXGolf? I am looking this up on the board... ahh. Well, let me improve the script then
code:
$a="?","Rmvble","Fx'd","Net","CD","RAM" for each $o in CreateObject("Scripting.FileSystemObject").Drives $o.DriveLetter ":" $a[$o.DriveType] ? next
cj
|
NTDOC
|
(KiX Master)
|
2002-06-20 06:59 AM
|
|
|
|
|
Re: Drive enumeration
|
|
Good Job there cj
|
BrianTX
|
(Korg Regular)
|
2002-06-20 03:45 PM
|
|
|
|
|
Re: Drive enumeration
|
|
Cool, CJ!
Brian
|
Radimus
|
(KiX Supporter)
|
2002-06-20 05:35 PM
|
|
|
|
|
Re: Drive enumeration
|
|
Ok.. here is part 2 and 3.
Make it better
code:
break on
$DriveType="unknown","removable","fixed","network","cd-rom","ram" $DrivePara="driveletter","drivetype","sharename","isready","filesystem","volumename","serialnumber"
$ld=DriveEnum(3) ? $ld
for each $drive in split($ld,",") $info=DriveProp("$drive") for $index = 0 to ubound($info) ? $DrivePara[$index] ": " $info[$index] next ? next get $k ;****************************************************************** function DriveEnum(optional $filter) dim $fso, $Drive $fso=CreateObject("Scripting.FileSystemObject") if $fso for each $Drive in $fso.Drives if instr($filter,$Drive.DriveType) or $filter="" $DriveEnum=$DriveEnum+$Drive.DriveLetter+"," endif next $DriveEnum=left($DriveEnum,len($DriveEnum)-1) $fso="" endif endfunction
;****************************************************************** function DriveProp($Drive) dim $fso, $Drives, $list, $param, $property dim $temparray[6] $fso = createobject("scripting.filesystemobject") if $fso $Drives = $fso.drives $list=0 for each $d in $drives if $Drive=$d.driveletter for $param = 0 to ubound($DrivePara) $property=$DrivePara[$param] $ret=execute('$$temparray[$param]=$$d.$property') if $param=1 $temparray[$param]=$DriveType[$temparray[$param]] endif next $DriveProp=$temparray endif next $fso="" endif exit @error endfunction
[ 20 June 2002, 18:35: Message edited by: Radimus ]
|
Radimus
|
(KiX Supporter)
|
2002-06-20 07:15 PM
|
|
|
|
|
Re: Drive enumeration
|
|
even better...
function DriveEnum() will return the drive letters for all drives matching the types specified "" wil return all drives, "12" will return floppy and hard drives
function DriveProp($Drive) will return the properties of the specified drive as an array
code:
break on
$parameters="driveletter","drivetype","sharename","isready","filesystem","volumename","serialnumber"
$ld=DriveEnum(3) ? $ld
for each $drive in split($ld) $info=DriveProp("$drive") for $index = 0 to ubound($info) ? $parameters[$index] ": " $info[$index] next ? next
get $k ;****************************************************************** function DriveEnum(optional $filter) dim $fso, $Drive
$fso=CreateObject("Scripting.FileSystemObject") if $fso for each $Drive in $fso.Drives if instr($filter,$Drive.DriveType) or $filter="" $DriveEnum=$DriveEnum+$Drive.DriveLetter+" " endif next $DriveEnum=left($DriveEnum,len($DriveEnum)-1) $fso="" endif endfunction
;****************************************************************** function DriveProp($Drive) dim $fso, $Drives, $list, $param, $property $DriveType="unknown","removable","fixed","network","cd-rom","ram" $DrivePara="driveletter","drivetype","sharename","isready","filesystem","volumename","serialnumber" dim $temparray[6] $fso = createobject("scripting.filesystemobject") if $fso $D=$fso.getdrive("$Drive") for $param = 0 to ubound($DrivePara) $property=$DrivePara[$param] $ret=execute('$$temparray[$param]=$$d.$property') if $param=1 $temparray[$param]=$DriveType[$temparray[$param]] endif next $DriveProp=$temparray $fso="" endif exit @error endfunction
[ 20 June 2002, 19:38: Message edited by: Radimus ]
|
BrianTX
|
(Korg Regular)
|
2002-06-20 08:46 PM
|
|
|
|
|
Re: Drive enumeration
|
|
Cool. glad to see this led to a neato UDF!
Brian
|