1-06-05 12:06
[Windows] Korak u VBS skripte
piše BORIS TROJAN
Korištenjem skripti vrlo se jednostavno mogu automatizirati svakodnevni poslovi održavanja i administriranja. Svladavanje osnovnih načela Microsoft Visual Basic Scriptinga (VBS) pomaže pri automatiziranju najjednostavnijih ponavljajućih zadataka na serverima i mreži kao što su, primjerice, kopiranje ili prijenos datoteka.
VBS skripte su podskup Microsoft Visual Basica koji se naziva Visual Basic Scripting Edition. Od klasičnog pisanja skripti u shellu razlikuju se po korištenju sasvim drugačijeg principa - objekata i metoda. Svi su klasični programerski koncepti i dalje jednaki - varijable, konstante, klopke za pogreške, uvjeti, itd. Ipak, VBS se razlikuje po tome što uvijek počinje nekim objektom.
Platforma za VBS skripte je Windows Scripting Host (Wscript.exe) koji nudi niz alata s predefiniranim mogućnostima. U VBS-u alate nazivamo objektima, a različite mogućnosti koje alat posjeduje nazivamo metodama.
Osnovna sintaksa tako glasi:
objekt.metoda
Root objekt u Windows Scripting Hostu je Wscript, a objekata je ukupno 13. Koncept objekata i metoda pojasnit ćemo korištenjem navedenog objekta.
Stvaranje objekta FileSystemObject
Ovaj se objekt koristi za interakciju s datotečnim sustavom Windowsa. Budući da ne pripada bazičnim WSH objektima, ne može se koristiti direktno, nego ga WSH mora pozvati iz biblioteke Scripting Runtime (%windir%\system32\scrrun.dll).
Nakon što je pozvan, FileSystemObject koristi se za stvaranje, kopiranje ili brisanje datoteka i direktorija. Pozivanje objekta je postupak koji se naziva "instantiating an object", a zapravo je stvaranje objekta i dodavanje tog objekta nekoj varijabli.
Da bismo pozvali i stvorili ovaj objekt, poslužit ćemo se Windows Script Host root objektom Wscript:
Wscript.CreateObject("Scripting.FileSystemObject")
Jedna od metoda objekta Wscript je i CreateObject koja će iz Scripting Runtime Libraryja preuzeti već postojeći objekt i pripremiti ga za korištenje u našoj skripti. No, da bismo objekt i njegove metode mogli koristiti moramo ga pridružiti nekoj varijabli. U Visual Basicu varijable zahtijevaju deklariranje:
Dim objFSO
Nadalje, da bismo nešto pridružili varijabli koristimo staru poznatu naredbu Set, tako da će "instantiranje" našeg objekta konačno izgledati ovako:
Dim objFSO Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject")
Korištenje metoda objekta FileSystemObject
Metode za manipuliranje datotečnim sustavom objekta FileSystemObject:
CopyFile kopira datoteke na drugu lokaciju
DeleteFile briše datoteke
FileExists vraća True ili False s obzirom na postojanje datoteke
MoveFile premješta datoteke na drugu lokaciju
CopyFolder kopira direktorije na drugu lokaciju
DeleteFolder briše direktorije
FolderExists vraća True ili False s obzirom na postojanje direktorija
MoveFolder premješta direktorije na drugu lokaciju
Echo ispis na ekranu
Zadatak naše skripte je kopiranje datoteke koja se naziva datoteka.txt na mrežni dijeljeni direktorij. Prije kopiranja potrebno je provjeriti da li se datoteka nalazi na izvornom odredištu.
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
If (objFSO.FileExists("C:\test\datoteka.txt ")) Then
objFSO.CopyFile "C:\test\datoteka.txt", "\\Server1\DijeljeniDir\datoteka.txt"
Else WScript.Echo("Datoteka ne postoji")
End if
Dosad smo koristili tri metode objekta FileSystemObject - FileExists, CopyFile i Echo. Pravilno korištenje if-then-else konstrukcije, zagrada i navodnika je prepoznatljivo i svladava se korištenjem.
Otpuštanje objekta
Programerska tehnika zahtijeva da se nakon "instantiranja" objekta i prije napuštanja skripte, korišteni objekt otpusti. To se postiže na način da se varijabli pridoda vrijednost nothing, doslovno:
Set ObjFSO = Nothing
Na kraju će skripta ispravno otpuštenog objekta izgledati ovako:
'Kopiranje datoteke na dijeljeni direktorij
'----- stvaranje objekta FileSystemObject ---------
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
'----- Da li datoteka.txt postoji i kopiranje -----
If (objFSO.FileExists("C:\test\datoteka.txt ")) Then
objFSO.CopyFile "C:\test\datoteka.txt", "\\Server1\DijeljeniDir\datoteka.txt"
Else WScript.Echo("Datoteka ne postoji")
End if
'----- Otpuštanje objekta -------------------------
Set objFSO = Nothing
Wscript.Quit
Linkovi:
Windows Script Host objekti
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsconwindowsscripthostobjectmodel.asp
|