|
|
Meghajtó információk lekérdezése
Windows Scripting Host 8. rész
|
|
Példaprogram letöltése
3865 bájt
|
Gyakran szükséges tudni, hogy egy meghajtón van-e elegendő tárterület, a csatlakoztatott hálózati meghajtóhoz milyen megosztás tartozik, vagy csak annyit, hogy az egység készen áll-e az adatok fogadására (pl: floppy). Mindezen információkhoz a Windows Scripting Host segítségével hozzájuthatunk. Cikkünkben több példa szkripten keresztül végezzük el a lekérdezéseket.
Cikkünkhöz mellékelve megtalálhatók a példákban szereplő szkriptek:
"DriveExists.vbs" - Leellenőrzi, hogy az A: meghajtó létezik-e a rendszerben.
"Drives.vbs" - Kilistázza a rendszerben lévő meghajtókat, ellenőrzi, hogy készen állnak-e az adatok fogadására, ha igen kiírja a kötetcímkéjüket (CD ROM-nál és floppy-nál a benne lévő lemezét).
"DriveType.vbs" - Leellenőrzi egy megadott meghajtó állapotát az előbbiekhez hasonlóan és kiírja, hogy milyen típusú (CD ROM, RAM Disk, Fixed, stb.)
"FileSystem.vbs" - Kiírja az adott meghajtón található fájlrendszer típusát.
"GetDrive.vbs" - Kiírja az adott meghajtó adatait: kötetcímke, maximális kapacitás, szabad kapacitás.
"ShareName.vbs" - Kiírja az adott hálózati meghajtóhoz tartozó hálózati elérési útvonalat.
Cikksorozatunk utóbbi részeiben a FileSystemObject-en keresztül hajtottuk végre ténykedéseinket és még mindig nincs vége. A meghajtó információkhoz való hozzájutáshoz is "Ő" fogja szolgáltatni a megoldást.
Kezdjük az elején: ellenőrizzük, hogy az adott meghajtó létezik-e:
Dim fso, msg
drv="A:"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.DriveExists(drv) Then
msg = ("Van ilyen nevű meghajtó: "+UCase(drv))
Else
msg = ("Nincs ilyen nevű meghajtó: "+UCase(drv))
End If
MsgBox(msg)
Szkriptünk ellenőrzi az A: floppy meghajtó meglétét.
A példa kulcsfüggvénye a "DriveExists (meghajtó)". Ahol a "meghajtó" értéke a hozzá tartozó fizikai egység betűjele, különböző formában: A, A:, A:\. Ami érdekesség, hogy a függvényt hálózati elérési utak tesztelésére is lehet használni. Ekkor a "meghajtó" értéke az UNC szintaxis szerinti útvonal (\\kiszolgáló\megosztás).
Ha már itt tartunk az is megoldható, hogy egy csatlakoztatott hálózati meghajtóhoz tartozó UNC útvonalat kiírassunk:
Dim fso, d
drvpath="H:"
Set fso = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(fso.GetDriveName(drvpath))
MsgBox("A(z) " + d.DriveLetter + " meghajtó megosztása: " + d.ShareName)
Ehhez a "GetDrive" objektum "ShareName" nevű tulajdonságát kérdeztük le a H:\ hálózati meghajtó esetében.
Most már tudjuk, hogy létezik-e az általunk keresett eszköz, de vajon milyen fájlrendszer van rajta? FAT, FAT32, NTFS, CDFS?
Dim fso,d
drvspec="C:"
Set fso = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(drvspec)
MsgBox(d.FileSystem)
Ismét a "GetDrive" objektum szolgáltatja az információt, csak most a "FileSystem" tulajdonságát kell megkérdeznünk.
Bővítsünk egy kicsit: tudjuk meg, hogy mi a kötetcímkéje mennyi üres hely van rajta, mennyi az összes tárterület és ebből mennyit használhatunk fel:
Dim fso, d, s
drvPath="C:"
Set fso = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(fso.GetDriveName(drvPath))
s = "A(z) " + UCase(drvPath) + " meghajtó "
s = s + "kötetcímkéje: ["+d.VolumeName
s = s + "] és " + FormatNumber(d.FreeSpace, 0)
s = s + " bájt üres hely van rajta a(z) " + FormatNumber(d.TotalSize, 0) + "-ból."
s = s + " Felhasználható bájtok száma: " + FormatNumber(d.AvailableSpace, 0)
MsgBox(s)
A "GetDrive" objektum "VolumeName" tulajdonsága adja vissza a kötetcímkét sztring formátumban.
Üres helyünk a "FreeSpace"-ben tárolódik. Az összes kapacitás pedig a "TotalSize"-ban. Mindebből "AvailableSpace" értéknyit lehet felhasználni. Joggal merülhet fel a kérdés, hogy mi a különbség az üres és a felhasználható terület között. Nos alaphelyzetben semmi, de ha NTFS fájlrendszeren kvóta-rendszer működik, akkor már lehet. Ugyanis korlátozható a maximálisan felhasználható merevlemez terület.
Nem mindegy, hogy a használandó eszköz milyen típusú és készen áll-e az adatok fogadására. Ha a típus CDROM nem biztos, hogy érdemes erőltetni a szkriptből való írást. Ugyanakkor floppyról is csak akkor lehet adatot olvasni, ha minimum van benne lemez. Bonyolultabb szkripteknél megnehezül az ilyen és ehhez hasonló ellenőrző műveletek hiányából fakadó hibakeresés:
Dim fso, d, t, r
drvpath="A"
Set fso = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(drvpath)
Select Case d.DriveType
Case 0: t = "Ismeretlen"
Case 1: t = "Removable"
Case 2: t = "Fixed"
Case 3: t = "Network"
Case 4: t = "CD-ROM"
Case 5: t = "RAM Disk"
End Select
If d.IsReady Then
r = "készen áll"
Else
r = "nem áll készen"
End If
MsgBox("A meghajtó típusa: " + d.DriveLetter + ": - " + t + " és " + r)
Még mindig a "GetDrive" objektum segít nekünk, annak is a "DriveType" paramétere. Összesen 6 típust különböztet meg (pontosabban ötöt, mert az egyik a fel nem ismerteket jelöli). Minden eszközhöz tartozik egy "IsReady" logikai tulajdonság, aminek az értéke: TRUE - ha készen áll az eszköz és FALSE - ha nem.
Végül van még egy objektum "Drive" néven annak tárolására, hogy milyen meghajtók vannak a rendszerbe telepítve (beleértve a hálózatit is). Ez tulajdonképpen a Sajátgép (My Computer) ikonon való kettős kattintás után megjelenő lista. Cikluson keresztül lekérdezhető és a fentiek felhasználásával ellenőrizzük az eszköz rendelkezésre állását és ennek megléte esetén írassuk ki a kötetcímkékét (CD-nél a benne lévő média címkéjét).
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.IsReady Then
n = "Készen áll > " + d.VolumeName
Else
n = "Nem áll készen"
End If
s = s + n + Chr(13)
Next
MsgBox (s)
|
Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!
|