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.

ObjFS.GetDrive(drive)

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.

Typ=disk.DriveType

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

pripraven=disk.IsReady

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.

pismeno=disk.DriveLetter

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.

Kapacita=disk.TotalSize

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.

system=disk.FileSystem

Jméno disku

Vlastnost Volumename vrací jméno disku

jmeno=disk.Volumename

Sériové číslo disku

Vlastnost SerialNumber vrací sériové číslo disku.

cislo=disk.SerialNumber

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.

koren=disk.RootFolder

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:\
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.

Žádný příspěvek v diskuzi

Odpovědět