LOCAL laDrivetype(6), lcFont, i, lcL, j
laDrivetype(1) = [unbekannt ]
laDrivetype(2) = [Diskettenlaufwerk ]
laDrivetype(3) = [lokaler Datenträger]
laDrivetype(4) = [Netzlaufwerk ]
laDrivetype(5) = [CD/DVD-ROM Laufwerk]
laDrivetype(6) = [RAM Disk ]
lcFont = _screen.FontName
_screen.FontName = [Courier New]
CLEAR
?[LW Typ Gesamtgröße Freier Speicher]
FOR i = 65 TO 90
lcL = CHR(i) + [:]
IF DISKSPACE(lcL,1) > -1
? lcL,laDrivetype(DRIVETYPE(lcL))
FOR j = 1 TO 2
?? [ ],TRANSFORM(DISKSPACE(lcL,j)/1000/1000,[999,999]) + [ MB]
?? [ ],PADL(ROUND(DISKSPACE(lcL,j)/1024/1024/1024,1),5,[ ]) + [ GB]
ENDFOR
ENDIF
ENDFOR
_screen.FontName = lcFont
Im Allgemeinen dürften diese Informationen ausreichend sein. Wenn wir jedoch weiterführende Daten benötigen (z.B. Dateisystem, Seriennummer, Datenträgerbezeichnung), dann streckt der Fux die Flügel. Zur Hilfe kommt uns wie so oft der Scripting Host. Also erstellen wir uns ein sogenanntes File System Object und fragen die benötigten Informationen ab. Wie dies bewerkstelligt wird, darüber gibt uns der folgende Code Aufschluss:
LOCAL laDrivetype(6), lcFont, oFSO
laDrivetype(1) = [unbekannt]
laDrivetype(2) = [Wechseldatenträger]
laDrivetype(3) = [lokaler Datenträger]
laDrivetype(4) = [Netzlaufwerk]
laDrivetype(5) = [CD/DVD-ROM Laufwerk]
laDrivetype(6) = [RAM Disk]
lcFont = _screen.FontName
_screen.FontName = [Courier New]
oFSO = CREATEOBJECT([Scripting.FileSystemObject])
CLEAR
?PADR([LW], 3,[ ])
?? PADR([Typ], 21,[ ])
?? PADR([Dateisystem], 11,[ ])
?? PADL([SerialNo], 13,[ ])
?? [ ]
?? PADR([Datenträgerbezeichnung],33,[ ])
?? PADR([Gesamtgröße], 20,[ ])
?? PADR([Freier Speicher], 20,[ ])
?? PADR([Verfügbarer Speicher], 20,[ ])
FOR EACH oDrive IN oFSO.Drives
WITH oDrive
? PADR(.DriveLetter + [:],3,[ ])
?? PADR(laDriveType(.DriveType + 1),21,[ ])
IF .Isready
?? PADR(.FileSystem,11,[ ])
?? PADL(.SerialNumber,13,[ ])
?? [ ]
?? PADR(IIF(.DriveType = 3,.ShareName,.VolumeName),32,[ ])
?? TRANSFORM(.TotalSize / 1000 / 1000, [999,999]) + [ MB (]
?? PADL(.TotalSize / 1024 / 1024 / 1024,4,[ ]) + [ GB)]
?? TRANSFORM(.FreeSpace / 1000 / 1000, [999,999]) + [ MB (]
?? PADL(.FreeSpace / 1024 / 1024 / 1024,4,[ ]) + [ GB)]
?? TRANSFORM(.AvailableSpace / 1000 / 1000, [999,999]) + [ MB (]
?? PADL(.AvailableSpace / 1024 / 1024 / 1024,4,[ ]) + [ GB)]
ELSE
?? [kein Datenträger eingelegt]
ENDIF
ENDWITH
ENDFOR
_screen.FontName = lcFont
RELEASE laDrivetype, lcFont, oFSO
Mit Hilfe dieses kleinen Beispiels sollte es nun kein Problem mehr sein, die gewünschten Daten in Erfahrung zu bringen.
Keine Kommentare:
Kommentar veröffentlichen