Pomocí objektu FileSystemObject můžeme pracovat s disky, adresáři a soubory. Můžeme kopírovat, přesouvata mazat soubory i adresáře, získávat informace o discích, adresářích, souborech a mnoho dalšího.V dnešním článku se podíváme na práci s disky a to nejen pevnými, ale i výměnnými, síťovými a dokonce i RAMdisky.
S možnostmi práce se soubory jsme se seznámili již v předchozích článcích. Dnes si probereme možnosti práce s disky a na závěr tohoto článku si na příkladu ukážeme jak udělat jednoduchou ASP aplikaci, která nám umožní zobrazit do tabulky informace o všech discích v systému.
Pro přístup k souborovému systému je třeba nejdříve získat referenci na FileSystemObject a pomocí něho budeme získávat přístup k diskům.
Dim ObjFS,ObjFILE ‚ Vytvoření instance objektu FileSystemObject Set ObjFS=Server.CreateObject(„Scripting.FileSystemObject“) | |
Získání informací o disku
Objekt Drive poskytuje informace o discích v systému a to nejen fyzických, ale i síťových a virtuálních (RAMDISK).
Objekt drive poskytuje tyto vlastnosti
- Celková velikost disku v bajtech
- Volné místo na disku v bajtech
- Písmeno přiřazené disku
- Typ disku
- Sériové číslo disku
- Typ souborového systému, který je použit na disku
- Informace o tom, zda je disk připraven
- Jméno disku
- Cesta ke kořenovému adresáři disku
Pro přístup k výše jmenovaným vlastnostem disku je třeba získat referenci na objekt drive.
dim disk set disk=objfs.GetDrive(„c:“) | |

Metoda Getdrive vraci referenci na disk, který je specifikován jako parametr.

Parametr drive může být písmenkové označení disku a to jak ve tvaru C nebo C:, ale dokonce i C:\. Další možností specifikace disku je zadat jméno sdílené složky na sítí a to sice ve tvaru \\pocitac\sdilenaslozka1.
Typ disku
Vlastnost DriveType vrací informaci o typu disku.

Význam vracených hodnot vlastností DriveType je uveden v tabulce
| Konstanta |
Hodnota |
Význam |
| Unknown |
0 |
Neznámý disk |
| Removable |
1 |
Výměnný disk (například disketa či ZIP) |
| Fixed |
2 |
Pevný disk |
| Remote |
3 |
Síťový disk – sdílená složka na jiném počítači. |
| CDROM |
4 |
CD Disk |
| RAMDisk |
5 |
Disk umístěn v paměti RAM počítače. Po vypnutí počítače dojde k jeho vymazání. |
Připravenost disku
Vlastnost IsReady poskytuje informaci o připravenosti disku

Jestliže je vrácená hodnota True je disk připraven pro práci, v opačném případě nikoliv.
Písmeno přiřazené disku
Vlastnost DriveLetter vrací informaci o tom, jaké je jednotce přiřazeno písmeno.

V následujícím příkladu si ukážeme použití vlastností DriveType,DriveLetter a IsReady
Function ShowDriveInfo(drvpath) Dim fso, d, s, t Set fso = CreateObject(„Scripting.FileSystemObject“) Set d = fso.GetDrive(drvpath) Select Case d.DriveType Case 0: t = „Neznámý disk“ Case 1: t = „Výměnný“ Case 2: t = „Pevný“ Case 3: t = „Síťový“ Case 4: t = „CD-ROM“ Case 5: t = „RAM Disk“ End Select s = „Drive “ & d.DriveLetter & „: – “ & t If d.IsReady Then s = s & „<BR>“ & „Disk je připraven.“ Else s = s & „<BR>“ & „Disk není připraven.“ End If ShowDriveInfo = s End Function Response.Write(ShowDriveInfo(„D:“)) Response.Write(„<BR><BR>“) Response.Write(ShowDriveInfo(„A:“)) | |

Výsledek činnosti příkladu.
Disk D: – Pevný Disk je připraven. Disk A: – Výměnný Disk není připraven. | |
Velikost disku
Vlastnost TotalSize vrací informaci o kapacitě disku. Vrácená hodnota udává celkovou kapacitu disku v bajtech.
Volné místo na disku
Vlastnost AvailableSpace vrací informaci o volném místě disku. Vrácená hodnota udává celkové volné místo disku v bajtech.
Volno=disk.AvailableSpace | |

V následujícím příkladu si ukážeme použití vlastností TotalSize a AvailableSpace
Function ShowSpaceInfo(drvpath) Dim fs, d, s Set fs = CreateObject(„Scripting.FileSystemObject“) Set d = fs.GetDrive(fs.GetDrive(drvpath)) s = „Drive “ & d.DriveLetter & „:“ s = s & vbCrLf s = s & „Total Size: “ & FormatNumber(d.TotalSize/1024, 0) & “ Kb“ s = s & vbCrLf s = s & „Available: “ & FormatNumber(d.AvailableSpace/1024, 0) & “ Kb“ ShowSpaceInfo=s End Function Response.write(ShowSpaceInfo(„c:“)) | |

Výsledek činnosti příkladu:
Disk C: Kapacita: 2 749 724 Kb Volno: 775 832 Kb
Možná, že vás v příkladu zarazila konstrukce „FormatNumber(d.AvailableSpace/1024, 0)“. Funkce FormatNumber provádí formátování čísla podle zadaných parametrů. V tomto případě je vzata volné místo na disku, převedeno na Kb (1 Kb je 1024 bajtů) a je zobrazeno bez desetinných míst (0).
Souborový systém disku
Vlastnost FileSystem vrací informaci o tom, jaký souborový systém je na disku použit.
Jméno disku
Vlastnost Volumename vrací jméno disku
Sériové číslo disku
Vlastnost SerialNumber vrací sériové číslo disku.

Vrácená hodnota je však v desítkovém vyjádření a proto si ji musíme převést do tvaru, který známe například z příkazu DIR.Převod provedeme pomocí této konstrukce: left(hex(cislo),4)&“-„& right(hex(cislo),4)
V následujícím příkladu si ukážeme použití vlastností SerialNumber,FileSystem a VolumeName.
Function ShowDiskInfo(drvpath) Dim fso, d, s Set fso = CreateObject(„Scripting.FileSystemObject“) Set d = fso.GetDrive(fso.GetDrive(drvpath)) s = „Disk “ & d.DriveLetter & „: – “ & d.VolumeName & “ – “ & d.FileSystem & “ – “ & left(hex(d.serialNumber),4)&“-„& right(hex(d.serialNumber),4) ShowDiskInfo = s End Function Response.Write(ShowDiskInfo(„c:“)) | |

Výsledek činnosti příkladu:
Disk C: – CECKO – FAT32 – 48FB-90CE
Kořenový adresář disku
Vlastnost RootFolder vrací řetězec, který reprezentuje cestu do kořenového adresáře disku.
Získání informací o všech discích
Již jsme si popsali jak získáme informace o jednom disku. Nevýhodou výše uvedeného postupu je fakt, že musíme vědět přesně, se kterým diskem chceme pracovat. Co když ale budeme chtít vypsat informace o všech discích v systému?
Pro tento případ je tu kolekce Drives, který zahrnuje všechny disky v systému.
Dim fso, d, dc Set fso = CreateObject(„Scripting.FileSystemObject“) Set dc = fso.Drives Response.write(dc.count&“<br>“) Response.Write(„<table border=1 CELLSPACING=0 CELLPADDING=5>“) Response.Write(„<tr ALIGN=CENTER bgcolor=#3366bb>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“ color=white>“) Response.Write(„Písmeno“) Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“ color=white>“) Response.Write(„Typ disku“) Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“ color=white>“) Response.Write(„Připraven“) Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“ color=white>“) Response.Write(„Kapacita“) Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“ color=white>“) Response.Write(„Volno“) Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“ color=white>“) Response.Write(„Sériové číslo“) Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“ color=white>“) Response.Write(„Systém souborů“) Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“ color=white>“) Response.Write(„Cesta“) Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“ color=white>“) Response.Write(„Kořen“) Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“ color=white>“) Response.Write(„Jmenovka“) Response.Write(„</td>“) Response.Write(„</tr>“) For Each d in dc Response.Write(„<tr align=center>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“>“) Response.Write(d.DriveLetter) Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“>“) Select Case d.DriveType Case 0: typ = „Neznámý“ Case 1: typ = „Výměnný“ Case 2: typ = „Pevný“ Case 3: typ = „Síťový“ Case 4: typ = „CD-ROM“ Case 5: typ = „RAM Disk“ End Select Response.Write(typ) Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“>“) Response.Write(d.Isready) Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“>“) if d.Isready then Response.Write(FormatNumber(d.TotalSize/1024/1024,0)&“ MB“) else Response.Write(“ „) end if Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“>“) if d.Isready then Response.Write(FormatNumber(d.Freespace/1024/1024,0)&“ MB“) else Response.Write(“ „) end if Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“>“) if d.Isready then Response.Write(left(hex(d.serialNumber),4)&“-„&right(hex(d.serialNumber),4)) else Response.Write(“ „) end if Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“>“) if d.Isready then Response.Write(d.FileSystem) else Response.Write(“ „) end if Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“>“) if d.Isready then Response.Write(d.path) else Response.Write(“ „) end if Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“>“) if d.Isready then Response.Write(d.rootfolder) else Response.Write(“ „) end if Response.Write(„</td>“) Response.Write(„<td><FONT FACE=““MS SANS SERIF, HELVETICA CE, „“ SIZE=““1″“>“) if d.Isready then Response.Write(d.Volumename&“ „) else Response.Write(“ „) end if Response.Write(„</td>“) Next Response.Write(„</table>“) | |

Pokud nevíte, co dělá konstrukce For Each d in dc … Next tady je jednoduché vysvětlení:
V podstatě jde o cyklus přes všechny položky kolekce Drives, na kterou je reference v proměnné dc. Do proměnné d jsou ukládány jednotlivé položky z kolekce se kterými je pak možno uvnitř For .. Next pracovat.
A tady je výsledek práce skriptu, který je použit v příkladu.
| Písmeno |
Typ disku |
Připraven |
Kapacita |
Volno |
Sériové číslo |
Systém souborů |
Cesta |
Kořen |
Jmenovka |
| A |
Výměnný |
False |
|
|
|
|
|
|
|
| C |
Pevný |
True |
2 685 MB |
797 MB |
48FB-90CE |
FAT32 |
C: |
C:\ |
CECKO |
| D |
Pevný |
True |
8 676 MB |
1 140 MB |
7022-D235 |
NTFS |
D: |
D:\ |
|
| E |
Pevný |
True |
5 985 MB |
207 MB |
54B0-F41A |
NTFS |
E: |
E:\ |
A |
| F |
Síťový |
True |
3 302 MB |
127 MB |
3C6C-F81B |
NTFS |
F: |
F:\ |
D_3800MB |
| G |
CD-ROM |
False |
|
|
|
|
|
|
|
| I |
Pevný |
True |
16 433 MB |
11 723 MB |
E4C8-2026 |
FAT32 |
I: |
I:\ |
SUPLIK |
| N |
Síťový |
True |
4 142 MB |
324 MB |
20C2-9DE4 |
NTFS |
N: |
N:\ |
medalist_G |
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.