#86196 - 2002-06-19 05:57 PM
Drive enumeration
|
BrianTX
Korg Regular
Registered: 2002-04-01
Posts: 895
|
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
|
Top
|
|
|
|
#86197 - 2002-06-20 04:32 AM
Re: Drive enumeration
|
cj
MM club member
Registered: 2000-04-06
Posts: 1102
Loc: Brisbane, Australia
|
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
|
Top
|
|
|
|
#86199 - 2002-06-20 05:35 AM
Re: Drive enumeration
|
cj
MM club member
Registered: 2000-04-06
Posts: 1102
Loc: Brisbane, Australia
|
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
|
Top
|
|
|
|
#86200 - 2002-06-20 06:59 AM
Re: Drive enumeration
|
NTDOC
Administrator
Registered: 2000-07-28
Posts: 11623
Loc: CA
|
Good Job there cj
|
Top
|
|
|
|
#86201 - 2002-06-20 03:45 PM
Re: Drive enumeration
|
BrianTX
Korg Regular
Registered: 2002-04-01
Posts: 895
|
Cool, CJ!
Brian
|
Top
|
|
|
|
#86202 - 2002-06-20 05:35 PM
Re: Drive enumeration
|
Radimus
Moderator
Registered: 2000-01-06
Posts: 5187
Loc: Tampa, FL
|
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 ]
|
Top
|
|
|
|
#86203 - 2002-06-20 07:15 PM
Re: Drive enumeration
|
Radimus
Moderator
Registered: 2000-01-06
Posts: 5187
Loc: Tampa, FL
|
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 ]
|
Top
|
|
|
|
#86204 - 2002-06-20 08:46 PM
Re: Drive enumeration
|
BrianTX
Korg Regular
Registered: 2002-04-01
Posts: 895
|
Cool. glad to see this led to a neato UDF!
Brian
|
Top
|
|
|
|
Moderator: Shawn, ShaneEP, Ruud van Velsen, Arend_, Jochen, Radimus, Glenn Barnas, Allen, Mart
|
0 registered
and 507 anonymous users online.
|
|
|