• Welcome to Jose's Read Only Forum 2023.
 

IFileSystem.Drives Property

Started by José Roca, July 14, 2008, 03:00:49 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

José Roca



You can iterate the members of the Drives collection as illustrated in the following code:

JScript


function ShowDriveList()
{
   var fso, s, n, e, x;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   e = new Enumerator(fso.Drives);
   s = "";
   for (; !e.atEnd(); e.moveNext())
   {
      x = e.item();
      s = s + x.DriveLetter;
      s += " - ";
      if (x.DriveType == 3)
         n = x.ShareName;
      else if (x.IsReady)
         n = x.VolumeName;
      else
         n = "[Drive not ready]";
      s +=   n + "<br>";
   }
   return(s);
}


VBScript


Function ShowDriveList
   Dim fso, d, dc, s, n
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set dc = fso.Drives
   For Each d in dc
      n = ""
      s = s & d.DriveLetter & " - "
      If d.DriveType = 3 Then
         n = d.ShareName
      ElseIf d.IsReady Then
         n = d.VolumeName
      End If
      s = s & n & "<BR>"
   Next
   ShowDriveList = s
End Function


PowerBASIC


FUNCTION ShowDriveList () AS STRING

   LOCAL fso AS IFileSystem
   LOCAL d AS IDrive
   LOCAL dc AS IDriveCollection
   LOCAL s AS STRING
   LOCAL n AS STRING
   LOCAL hr AS LONG
   LOCAL v AS VARIANT
   LOCAL penum AS IEnumVARIANT
   
   fso = NEWCOM "Scripting.FileSystemObject"
   dc = fso.Drives
   penum = dc.NewEnum_
   DO
      hr = penum.Nex(1, v, BYVAL %NULL)
      IF hr <> %S_OK THEN EXIT DO
      d = v
      v = EMPTY
      s = s & ACODE$(d.get_DriveLetter) & " - "
      IF d.DriveType = 3 THEN
         n = ACODE$(d.ShareName)
      ELSEIF d.IsReady THEN
         n = ACODE$(d.VolumeName)
      END IF
      s = s & n & $CRLF
      d = NOTHING
   LOOP
 
   FUNCTION = s

END FUNCTION