
Cikkünkhöz mellékeltük az alábbi szkriptet "Statistics.vbs" néven. Futtatásához szükséges az előző részben szereplő "Dial.vbs" szkript által létrehozott szövegfájl.
Ismétlésként
Előző részben írtunk egy szkriptet, amely a RASDIAL.EXE parancssori segédprogram meghívásával betárcsázott az Internet szolgáltatónkhoz és később egy gomb lenyomására bontotta a vonalat. A két művelet közti időt másodpercekben rögzítette és az eredményt egy fájlba írta. A fájl neve az aktuális évszámból, egy "-" jelből és az aktuális hónap sorszámából állt, a végén ".TXT" kiterjesztéssel (pl.: 2000-7-txt).
Eredmények feldolgozása
Az elhasznált másodpercek fájlba írása a "WriteLine" paranccsal történt, ami annyit jelent, hogy minden sor végére kerül egy kocsi vissza jel és a következő írási művelet mindig a következő sor elején kezdődik. Ennek eredményeként annyi sor lesz, ahányszor interneteztünk az adott hónapban. Igazából csak arra van szükségünk, hogy megtudjuk: eddig összesen mennyi időt használtunk el. Összegezzük a sorokban található számokat.
Lehetőséget kell biztosítani a korábbi hónapok megtekintésére is, ezért kérjük be a szkript elején a feldolgozandó fájl nevét, kiterjesztés nélkül, hogy megkönnyítsük a dolgot. További könnyítésként az aktuális hónap figyelembevételével állítsunk elő egy alapértelmezett fájlnevet és tároljuk el a "Today" változóba. A pillanatnyi dátumot és időt a "Now" rendszerváltozó adja meg, ebből a "DatePart" (~részdátum) függvénnyel lehet tagokat kiemelni. Például 2002.07.30 15:01:34 értékből a "DatePart ("yyyy", dátum)" nyerhető ki a 2002 évszám.
Today = DatePart ("yyyy", now) & "-" & DatePart ("m", now)
A WSH (Windows Scripting Host), "Inputbox" függvényével lehet a felhasználótól egy ablakban adatot bekérni. Egy feliratot ("Kérem a feldolgozandó fájl nevét:"), egy beviteli mezőt (ide írjuk be alapértelmezett adatként a "Today" változót), egy "OK" és egy "Mégsem" ("Cancel") gombot tartalmaz az ablak. Második paraméterként - nem kötelező jelleggel - megadható a fejléc szövege ("Statisztika készítés"). Könnyítésként nem kértünk fájlkiterjesztést a felhasználótól, így most pótoljuk.
FileName = Inputbox ("Kérem a feldolgozandó fájl nevét:", "Statisztika készítés", Today)
FileName = FileName + ".txt"
Inicializálunk egy változót a másodpercek összegének tárolására.
Minden adat rendelkezésünkre áll a fájl megnyitásához (1 = megnyitás csak olvasásra), amit mindig az aktuális könyvtárban teszünk meg. Ellenőrizzük, hogy valóban létezik ("FileExists"): Ha nem, egyszerűen lépjünk ki, ha igen, akkor az elejétől a végéig ("AtEndOfStream") olvassuk be ("ReadLine") az adatokat és adjuk hozzá a "Count" változóhoz.
Set fso = CreateObject("Scripting.FileSystemObject")
if fso.FileExists (FileName) then
Set f = fso.OpenTextFile(FileName, 1 , True)
Do while f.AtEndOfStream <> True
Count = Count + f.ReadLine
Loop
f.Close
Most már tudjuk, hogy hány másodpercet interneteztünk összesen ("Count"). Ez azonban nem elég szemléletes és nehezen értelmezhető. Jobb lenne átszámolni órákká, percekké és másodpercekké.
H = Fix (Count/3600)
Count = Count - H * 3600
M = Fix (Count/60)
Count = Count - M * 60
S = Count
All= H & " óra " & M & " perc " & S & " másodperc"
Így már sokkal jobban értelmezhető, már csak a képernyőn kell megjeleníteni.
Result = msgbox (FileName + Chr(13) + chr(13) + "Kapcsolatok összes ideje:" + chr(13) + All , 64 , "Internet kapcsolat időtartama.")
end If
A 64-es szám az üzenetablakot információs ablakként rajzolja ki, ami annyit jelent, hogy tartalmaz egy kis ikont egy "i" betűvel és egy "OK" gombot, amire, ha rákattintunk bezáródik. Az "Internet kapcsolat időtartama." szöveg a fejlécben jelenik meg.
Tipp
Másoljuk az időmérő és az eredmény feldolgozó szkripteket a felhasználók saját profiljaiba (Documents and Settings mappa) és minden felhasználó csak a sajátját futtassa. Így könnyedén megmondható, hogy ki mennyit internetezett az adott hónapban. Az értékek összege megadja a cég teljes Internet használati idejét.