Vbs naredbe. VBScript. Osnove VBScripta. Metode i svojstva klase Shell

💖 Sviđa li vam se? Podijelite vezu sa svojim prijateljima

Vrste podataka

Jezik VBScript koristi jedan tip podataka - Variant, koji vam omogućuje pohranjivanje broja, niza, datuma, Booleove vrijednosti, reference objekta i drugih informacija u varijablu. Možete odrediti vrstu sadržaja varijable pomoću skupa funkcija: VarType , TypeName, IsArray, IsDate, IsEmpty, IsNull, IsNumeric, IsObject, o kojima će biti riječi u nastavku. Vrsta sadržane informacije također se naziva podtip varijante. Kompletan popis podtipova dan je u sljedećoj tablici:

Podtip Opis
Prazan Varijabli nije dodijeljena vrijednost. Kada koristite neinicijaliziranu varijablu u numeričkim izrazima, 0 će biti zamijenjena, au string izrazima, prazan niz će biti zamijenjen.
Null Varijabla ne sadrži podatke.
Booleov Booleova varijabla može imati vrijednosti True ili False.
Bajt Cijeli broj u rasponu od 0 do 255.
Cijeli broj Cijeli broj u rasponu od -32,768 do 32,767.
Valuta Broj s fiksnom točkom u rasponu od -922,337,203,685,477.5808 do 922,337,203,685,477.5807.
dugo Cijeli broj u rasponu od -2,147,483,648 do 2,147,483,647.
Singl Broj s pomičnim zarezom jednostruke preciznosti. Za negativne vrijednosti prihvatljivi raspon je

od -3,402823E38 do -1,401298E-45. Za pozitivne - od 1.401298E-45 do 3.402823E38.

Dvostruko Broj s pomičnim zarezom dvostruke preciznosti. Za negativne vrijednosti, prihvatljivi raspon je od

79769313486232E308 do -4,94065645841247E-324. Za pozitivne - od 4,94065645841247E-324 do 1,79769313486232E308.

Datum vrijeme) Sadrži broj koji predstavlja datum u rasponu od 1. siječnja 100. do 31. prosinca 9999.
Niz Redoslijed znakova. Maksimalna duljina je oko 2 milijarde znakova.
Objekt Objekt.
Greška Broj greške.

Ovisno o izrazu u koji je uključena varijabla, njen će se sadržaj automatski pretvoriti u željeni tip. Razmotrite ovaj primjer:

Opcija Explicit Sub TestVBScript Dim A, B A = 5 B = "12" Application.MessageBox A + B, "", vbOkOnly End Sub

Budući da izraz uključuje numeričku varijablu A, interpreter pretvara vrijednost varijable B od niza "12" u broj i zbraja ih:

Promijenimo makro tako da varijabla A također je sadržavao redak:

Opcija Explicit Sub TestVBScript Dim A, B A = "5" B = "12" Application.MessageBox A + B, "", vbOkOnly End Sub

Pokrenimo ga. Sada će se na ekranu pojaviti rezultat spajanja (ulančavanja) dva niza, a ne zbroj njihovih numeričkih prikaza:

Kako biste izbjegli zabunu s automatskim pretvaranjem tipa, preporuča se korištenje funkcija pretvorbe: CBool, CByte, CCur, CDate, CDbl, CInt, CLng, CSng, CStr.

Ako bi rezultat izraza trebao biti ulančavanje nizova, a ne zbroj njihovih numeričkih prikaza, tada bi se umjesto + trebao koristiti operator &.

Varijable

Varijabla je zgodan simbolički prikaz područja memorije gdje aplikacija pohranjuje neke podatke. Tijekom izvođenja aplikacije, vrijednost varijable se može promijeniti. Prije upotrebe, varijabla mora biti deklarirana pomoću naredbe Dim.

Koristeći jedan operator, možete deklarirati nekoliko varijabli odjednom, ako navedete njihova imena odvojena zarezima:

Zatamni lijevo, desno, gore, dolje

Prilikom deklaracije nema potrebe za specificiranjem tipa podataka, jer su sve varijable tipa Variant.

Ako Option Explicit nije navedena u prvom retku teksta skripte, tada se varijable mogu koristiti bez deklaracije. Ali ovaj put može dovesti do pogrešaka koje je teško otkriti. Dovoljno je jednom pogrešno napisati naziv varijable u tekstu programa da dobijete nepredvidiv rezultat. Preporučujemo da uvijek navedete Option Explicit i deklarirate varijable.

Naziv varijable mora ispunjavati sljedeće zahtjeve:

  1. Započnite simbolom latinične abecede;
  2. Sastoje se samo od znakova latinične abecede ili znakova latinične abecede i brojeva;
  3. Nemojte premašiti duljinu od 255 znakova;
  4. Budite jedinstveni unutar svog opsega.

Opseg i vijek trajanja

Opseg varijable određen je mjestom na kojem je deklarirana. Ako je unutar tijela procedure, tada se takva varijabla naziva lokalnom i dostupna je samo unutar ove procedure. Ako je varijabla deklarirana u tekstu skripte, tada će biti vidljiva svim procedurama ili funkcijama definiranim u ovoj skripti. Lokalne varijable mogu imati ista imena ako su deklarirane u različitim procedurama.

U stablu Explorer prozora Script Object Editor postoji poseban odjeljak - Konstante i varijable - za deklariranje globalnih varijabli vidljivih svim funkcijama skripte u projektu.

Interpretator dodjeljuje memoriju za lokalne varijable u vrijeme kada su deklarirane i oslobađa ih nakon izlaska iz procedure. Globalne varijable postoje od trenutka kada su deklarirane sve dok skripta ne završi s izvođenjem. U odnosu na Gedymin, to znači da globalne varijable postoje tijekom cijelog izvođenja programa.

Dodjeljivanje vrijednosti varijabli

Vrijednost deklarirane varijable dodjeljuje se pomoću operatora =. Ime varijable je naznačeno lijevo od operatora, nova vrijednost je naznačena desno. Na primjer:

A = 200 B = "Ime"

Skalarne varijable i nizovi

Varijabla koja sadrži jednu vrijednost naziva se skalar. Ponekad je potrebno pohraniti nekoliko vrijednosti u jednu varijablu. U ovom slučaju, trebali biste deklarirati niz. Sintaksa deklaracije identična je deklaraciji skalarne varijable, s tim da iza imena u zagradama navodimo veličinu niza. Sljedeća deklaracija će stvoriti niz od 12 elemenata:

Dim mjeseci (11)

U VBScriptu, lijeva granica indeksa niza uvijek je 0. Stoga se veličina niza izračunava kao broj u zagradama plus jedan. Kada dodjeljujete vrijednost elementu polja, navedite njegov indeks u zagradama:

Mjeseci(0) = "siječanj" Mjeseci(1) = "veljača" Mjeseci(2) = "ožujak" ... Mjeseci(10) = "studeni" Mjeseci(11) = "prosinac"

Slično, kada pristupamo vrijednosti elementa, koristimo njegov indeks:

Ime mjeseca = mjeseci(5)

Niz ne mora biti jednodimenzionalan. VBScript nam omogućuje navođenje do 60 dimenzija prilikom deklaracije niza. Na primjer, sljedeća izjava će stvoriti dvodimenzionalni niz od 12 redaka i dva stupca:

Dim MonthDays(11, 1)

Prilikom pristupa elementima višedimenzionalnog niza moraju biti navedeni svi indeksi:

MonthDays(0, 0) = "siječanj" MonthDays(0, 1) = 31 MonthDays(1, 0) = "veljača" MonthDays(1, 1) = 28 ...

Gore smo deklarirali nizove čija se veličina ne mijenja tijekom rada programa. Ako ne znate unaprijed koliko će vam elemenata trebati, možete deklarirati dinamički niz:

Prije upotrebe trebate postaviti veličinu dinamičkog niza pomoću operatora ReDim:

ReDim A(25)

Tijekom izvođenja možete pozvati ReDim operator više puta, mijenjajući svaki put veličinu niza. Opcija Sačuvaj čuva vrijednosti elemenata niza prilikom promjene veličine. Na primjer, sljedeći kod će povećati gore deklarirani niz za pet elemenata, ostavljajući postojeće netaknutima:

ReDim Preserve A(30)

Imajte na umu da će se prilikom smanjenja veličine niza vrijednosti izbrisanih elemenata nepovratno izgubiti. Pomoću operatora Erase možete izbrisati elemente fiksnog niza ili osloboditi memoriju koju zauzima dinamički niz.

Dim A Redim A(25) ... Erase A

Konstante

Dobro je praktično pravilo deklarirati konstante za vrijednosti koje se opetovano koriste u tekstu programa. Ispravno dodijeljeno ime konstante poboljšava čitljivost, a sama njegova upotreba pojednostavljuje proces izmjene koda. Za razliku od varijabli, vrijednost konstante ne može se mijenjati tijekom izvođenja programa. Konstanta se stvara pomoću operatora Const:

Const CountryName = "Bjelorusija" Const CountryCode = 375

Unutar jedne naredbe može se deklarirati nekoliko konstanti, odvojenih zarezima. Kao i varijabla, konstanta ima svoj opseg ovisno o tome gdje (u proceduri ili izvan nje) i kako (javno ili privatno) je deklarirana. Konstante koje je stvorio operator Const bez specificiranja Public ili Private prema zadanim su postavkama javne.

U stablu Explorer prozora Script Object Editor postoji poseban odjeljak - Konstante i varijable - za deklariranje globalnih konstanti vidljivih svim funkcijama skripte u projektu.

Vrijednosti konstanti niza nalaze se u dvostrukim navodnicima.

Vrijednosti tipa Datum trebaju biti okružene hash simbolima (#) i koristiti američki format: mjesec/dan/godina. Na primjer:

Const Public IndependenceDay = #03/25/1918#

Kako bi se izbjegla zabuna između konstanti i varijabli, preporuča se koristiti jedan prefiks za sve konstante, kao što je "con", ili upisati naziv konstante velikim slovima.

Kako bi programeru olakšao rad, VBScript sadrži skup unaprijed definiranih konstanti.

Operatori

VBScript operatori spadaju u pet kategorija: aritmetika, usporedba, spajanje, logika i dodjela.

Aritmetički operatori

Operater Primjer upotrebe Opis
^ broj^eksponent Podiže broj na eksponent. Broj može biti manji od nule samo ako je cjelobrojna potencija. Ako je jedan od operanda Null, cijeli izraz je Null. Ako se izvede nekoliko potenciranja u nizu, rezultat se računa slijeva nadesno.
* broj1 * broj2 Umnožak dvaju brojeva. Ako operand ima vrijednost Empty, tada se pretpostavlja da je nula. Ako je barem jedan od operanda Null, cijeli izraz se procjenjuje kao Null.
/ broj1 / broj2 Realno dijeljenje dvaju brojeva. Pravila za operande slična su onima za operator množenja.
\ broj1\broj2 Cjelobrojno dijeljenje. Prije procjene, oba se operanda pretvaraju u Byte, Integer ili Long. Inače vrijede ista pravila kao i za operator dijeljenja.
Mod broj1 Mod broj2 Ostatak cjelobrojnog dijeljenja. Pretvaranje operanda u cijeli broj, kao i pravila za rukovanje Empty i Null, poput cjelobrojnog dijeljenja.
+ izraz1 + izraz2 Ako su oba operanda brojevi, rezultat je njihov aritmetički zbroj. Ako su oba operanda nizovi, radi se o spajanju (ulančavanju) dva niza. Ako je jedan operand broj, a drugi niz, tada će se operand niza pretvoriti u broj i dodati numeričkom. Ako je barem jedan od operanda Null, cijeli izraz se procjenjuje kao Null. Ako su oba operanda prazna, rezultat ima cjelobrojnu vrijednost 0. Ako je samo jedan operator prazan, kao rezultat se vraća vrijednost drugog operanda.
- broj1 – broj2 ili - broj U prvom slučaju vraća razliku dvaju brojeva. U drugom, obrće predznak broja. Pravila za operande s vrijednostima Null i Empty, kao i za operator množenja.

Operatori usporedbe

Format za korištenje operatora usporedbe:

Rezultat = izraz1 operator usporedbe izraz2

gdje se koriste sljedeći operatori usporedbe:< (меньше), <= (меньше или равно), >(veće od), >= (veće od ili jednako), = (jednako),<>(nejednak).

Ovisno o vrstama i vrijednostima operanda, usporedba se provodi na sljedeći način:

Ako Da
Oba operanda su brojevi. Uspoređuje se dva broja.
Oba operanda su nizovi. Izvodi se usporedba dva niza.
Jedan od operanda je broj, a drugi je niz. Operand niza pretvara se u broj i vrši se usporedba između dva broja.
Jedan od operanda je prazan, a drugi je broj. Pretpostavlja se da je operand s vrijednošću Empty 0.
Jedan od operanda je Empty, a drugi je niz. Pretpostavlja se da je operand s vrijednošću Empty prazan niz "". Uspoređuje se dva niza.
Oba operanda su prazna. Operandi se smatraju jednakima.
Najmanje jedan od operanda je Null. Rezultat je Null.

Poseban operator Is koristi se za usporedbu dviju varijabli objekta i vraća True ako se obje varijable odnose na istu instancu objekta.

Operatori ulančavanja

Rezultat = izraz1 & izraz2

Ako operand nije niz, pretvara se u tip niza. Ako su oba operanda Null, tada rezultat također ima vrijednost Null, međutim, za razliku od drugih operatora, ako je samo jedan operand Null, tada se uzima kao jednak praznom nizu. Operand postavljen na Empty također se tretira kao prazan niz "".

Logički operatori

VBScript nam daje sljedeće logičke operatore:

  1. Logička iznimka (Xor);
  2. Logički ekvivalent (Eqv);
  3. Logička implikacija (Imp).

Operandi logičkih operatora mogu biti Booleovi izrazi ili numeričke vrijednosti. U prvom slučaju, rezultat će biti Booleova konstanta, u drugom - broj. Ovisno o operatoru, unos jedne ili dvije Null vrijednosti kao ulaz može dovesti do Null rezultata. Operator Not je unarni i vraća logičku negaciju izraza. Operator Not izvodi pobitnu inverziju na numeričkom operandu. Ostali logički operatori su binarni. Donja tablica prikazuje rezultate izvršavanja svakog od operatora ovisno o vrijednosti operanda Exp1 i Exp2:

Exp1 Exp2 I Ili Xor Ekv Imp
Pravi Pravi Pravi Pravi lažno Pravi Pravi
Pravi lažno lažno Pravi Pravi lažno lažno
lažno Pravi lažno Pravi Pravi lažno Pravi
lažno lažno lažno lažno lažno Pravi Pravi
Pravi Null Null Pravi Null Null Null
lažno Null lažno Null Null Null Pravi
Null Pravi Null Pravi Null Null Pravi
Null lažno lažno Null Null Null Null
Null Null Null Null Null Null Null

U životu se najčešće koriste operatori And i Or, a mnogo rjeđe - Xor. U praksi se nismo susreli s korištenjem operatora Eqv i Imp. Ako vam je teško razumjeti gornju tablicu, rezimirajmo djelovanje ovih operatora:

  • I daje vrijednost True samo ako su oba operanda True. U svakom drugom slučaju, ili je False ili Null.
  • Ili daje vrijednost True ako je barem jedan od operanda True.
  • Xor daje vrijednost True ako su vrijednosti operanda različite i False ako su iste.

Kada se izvršava po bitovima na numeričkim operandima, rezultat logičkog operatora određen je sljedećom tablicom:

Exp1 Exp2 I Ili Xor Ekv Imp
0 0 0 0 0 1 1
0 1 0 1 1 0 1
1 0 0 1 1 0 0
1 1 1 1 0 1 1

Operator dodjele

Operator dodjele (=) detaljno je opisan u odjeljku Varijable.

Redoslijed primjene operatora

Ako izraz sadrži više operatora, oni se primjenjuju u skladu s određenim redoslijedom koji se naziva prvenstvo operatora. Zadani redoslijed možete promijeniti pomoću zagrada. Izraz unutar zagrada uvijek se prvi procjenjuje.

U izrazu koji sadrži operatore različitih kategorija prvo se izvode aritmetičke operacije, zatim operatori usporedbe, a zadnji se izvode logički operatori. Svi operatori usporedbe imaju isti prioritet i procjenjuju se slijeva nadesno. Aritmetički i logički operatori procjenjuju se sljedećim redoslijedom:

  1. Potenciranje (^);
  2. Promjena predznaka broja, unarni minus (-);
  3. Množenje (*) i dijeljenje (/);
  4. Cjelobrojno dijeljenje (\);
  5. Ostatak cjelobrojnog dijeljenja (Mod);
  6. Zbrajanje (+) i oduzimanje (-);
  7. Spajanje nizova (&).

Ako se množenje i dijeljenje pojavljuju u istom izrazu, tada se operacije izvode slijeva nadesno. Slično pravilo vrijedi u slučaju istodobne prisutnosti operatora zbrajanja i oduzimanja.

Operator spajanja nizova (&) nije aritmetički i ima prednost između aritmetičkih i usporednih operatora.

Redoslijed prioriteta za logičke operatore je sljedeći:

  1. Logička negacija, inverzija (Ne);
  2. Logičko množenje, konjunkcija (I);
  3. Logičko sabiranje, disjunkcija (Ili);
  4. Logička iznimka (Xor);
  5. Logički ekvivalent (Eqv);
  6. Logička implikacija (Imp).

Uvjetni izrazi

Uvjetni izrazi koriste se za kontrolu redoslijeda izvršavanja programskih naredbi i omogućuju organiziranje prijelaza (grananja) i ponavljanja naredbi. Obično se operatori usporedbe koriste u kombinaciji s uvjetnim izrazima.

If..Then..Else izraz

Izraz uvjetnog skoka If omogućuje vam da izvršite određenu grupu naredbi ovisno o rezultatu logičkog izraza ili vrijednosti Booleove varijable.

Za izvršenje jedne naredbe kada je zadani uvjet ispunjen, koristite sintaksu izraza u jednom retku:

Dim S If DatePart("w", Now) = vbMonday Then S = "Monday" Application.MessageBox S, "", vbOkOnly

Imajte na umu da je odjeljak Else u ovom slučaju izostavljen. Da biste izvršili grupu naredbi, morate ih staviti između ključnih riječi Then i End If.

Dim S If DatePart("w", Now) = vbMonday Then S = "Danas je ponedjeljak" Application.MessageBox S, "", vbOkOnly End If

Ako, kada je uvjet ispunjen, treba izvršiti jedan kod, a kada uvjet nije ispunjen, potreban je drugi kod, tada se koristi sintaksa izraza s odjeljkom Else:

Dim S If DatePart("w", Now) = vbMonday Then S = "Danas je ponedjeljak" Else S = "Danas nije ponedjeljak" End If Application.MessageBox S, "", vbOkOnly

Ako trebate birati između nekoliko alternativa, prikladna je sintaksa s ElseIf konstrukcijom:

Dim S, D D = DatePart("w", Now) If D = vbMonday Then S = "Monday" ElseIf D = vbTuesday Then S = "Tuesday" ElseIf D = vbWednesday Then S = "Wednesday" ... End If Application. Okvir za poruke S, "", vbOkOnly

Ako se izjave mogu ugniježditi:

Dim S, D D = DatePart("w", Now) If D = vbMonday Then S = "Monday" Else If D = vbTuesday Then S = "Tuesday" Else If D = vbWednesday Then S = "Wednesday" Else ... End Ako Kraj Ako Kraj Ako

Iako ne postoji ograničenje broja klauzula ElseIf u uvjetnom izrazu, njihova opsežna upotreba može rezultirati zbunjujućim, nečitljivim kodom. U slučaju odabira jedne alternative od više mogućih ovisno o vrijednosti selektora, preporučuje se korištenje izraza Select Case.

Odaberite..Padežni izraz

Prepišimo primjer dana u tjednu koristeći izraz za odabir:

Dim S Select Case DatePart("w", Now) Case vbMonday S = "Monday" Case vbTuesday S = "Tuesday" Case vbWednesday S = "Wednesday" ... Case Else Err.Raise 32000, "", "Unknown day of tjedan " Kraj Odaberite

Budući da se izraz selektora vrednuje samo jednom, korištenje Select..Case rezultira učinkovitijim kodom. Preporuča se uvijek koristiti odjeljak Case Else za hvatanje nevažećih ili neobrađenih vrijednosti selektora.

Izjave petlje

Vrlo često se javlja situacija kada je kod potrebno ponovno pokrenuti. Da biste to učinili, napišite naredbu petlje koja uvijek iznova ponavlja određene naredbe. Izjave petlje koriste se u mnogim situacijama: kada se izračunava zbroj preko popisa brojeva, kreće se kroz zapise skupa podataka ili za izvođenje bloka koda na više objekata. Postoji nekoliko ciklusa, opisanih u sljedećim odjeljcima. Neki od njih se izvršavaju dok je uvjet True, neki se izvršavaju dok je uvjet False. I na kraju, postoje oni koji se izvršavaju određeni broj puta.

Do..Operator petlje

Ovaj je operator dizajniran za izvršavanje grupe naredbi sve dok zadani uvjet ne postane True ili dok ne postane True. Uvjet se može provjeriti kao na početku petlje:

Izvršite [(While | Until) uvjet] petlju

i tako na kraju:

Uradi petlju [(While | Until) uvjet]

Naredba Exit Do može se pojaviti neograničen broj puta u tijelu petlje. Obično se koristi u kombinaciji s If..Then uvjetnom naredbom, omogućuje prijenos kontrole na naredbu odmah nakon petlje. Kada koristite Exit Do unutar ugniježđene petlje, kontrola će prijeći na vanjsku petlju.

Sljedeći kod omogućuje zamjenu kockica:

Dim Resp, Num Do Num = Int(6 * Rnd + 1) Resp = Application.MessageBox(Num & "Još jedan broj?", "",_ vbYesNo ili vbQuestion) Loop Until Resp = vbNo

Dok..Wend

To je skraćena verzija Do..Loop operatora i omogućuje vam izvršavanje grupe naredbi sve dok je uvjet True. Sintaksa operatora:

Dok stanje Wend

Imajte na umu da Exit Do nema učinka unutar ove petlje. While..Wend petlje mogu biti ugniježđene.

Za..Dalje

Ova petlja ponavlja zadani skup naredbi određeni broj puta. Sintaksa operatora je:

Za brojač = početak Za kraj Dalje

Prije početka petlje, varijabli brojača se dodjeljuje početna vrijednost. Zatim se provjerava uvjet brojača.<= end, при step >= 0, ili brojač >= kraj, s negativnim korakom. Nakon izvršenja bloka naredbi, varijabla brojača se povećava za vrijednost koraka i sve se ponavlja iz početka.

Promjena brojača u tijelu petlje nije zabranjena, ali se strogo obeshrabruje jer otežava razumijevanje programske logike i otklanjanje pogrešaka.

Exit For se može pojaviti u tijelu petlje neograničeni broj puta. Petlje se mogu ugniježditi. Na primjer, ova petlja inicijalizira trodimenzionalni niz:

Dim A(9, 9, 9) Dim I, J, K Za I = 0 do 9 Za J = 0 do 9 Za K = 0 do 9 A(I, J, K) = 1 Dalje Dalje Dalje

Za svaki..Dalje

Izjava petlje For Each..Next ponavlja određeni skup naredbi za svaki element niza ili zbirke i ima sljedeću sintaksu:

Za svaki element u grupi Next

Petlja se izvršava ako postoji barem jedan element u nizu ili kolekciji. Izlaz za može se pojaviti u tijelu petlje proizvoljan broj puta.

Ilustrirajmo korištenje For Each..Next sa sljedećim kodom, koji prikazuje popis datoteka iz korijenskog direktorija pogona c:\

Dim fso, f, f1, fc, s Postavi fso = CreateObject("Scripting.FileSystemObject") Postavi f = fso.GetFolder("c:\") Postavi fc = f.Files za svaki f1 u fc s = s & f1 .name & vbNewLine Next Application.MessageBox s, "Datoteke na c:\", vbOkOnly

Postupci

Da biste uštedjeli memoriju i strukturirali program, dio koda koji se više puta poziva na različitim mjestima može se oblikovati kao procedura. Postoje dvije vrste procedura u VBScriptu: potprogrami (Sub) i funkcije (Function). Potprogram je niz naredbi okruženih ključnim riječima Sub i End Sub. Potprogram može prihvatiti parametre kao ulaz, ali ne vraća vrijednosti. Funkcija, slijed naredbi između funkcije i završne funkcije, vraća rezultat i stoga se može koristiti u izrazu. Svaka procedura mora imati naziv koji je jedinstven unutar modula. Nazivi procedura deklariranih u globalnom modulu moraju biti jedinstveni unutar cijelog projekta.

Definicija podrutine i funkcije ima sljedeću sintaksu:

| Private] Sub name [(arglist)] End Sub | Private] Naziv funkcije [(arglist)] Kraj funkcije

Javne procedure su globalne i dostupne u svim programskim skriptama. Privatne procedure dostupne su samo u skripti u kojoj su deklarirane. Ako nije drugačije određeno, prijavljeni postupak je javan. Ključna riječ Default može se koristiti samo u tijelu klase i služi za određivanje zadane metode ove klase.

Popis parametara ima sljedeću sintaksu:

Varname [, ...]

Parametri se mogu proslijediti po vrijednosti (ByVal) ili po referenci (ByRef). Prema zadanim postavkama, svi parametri se prosljeđuju prema vrijednosti. Konstante, rezultati izračunavanja izraza, mogu se proslijediti samo prema vrijednosti. Promjena parametra proslijeđenog referencom promijenit će vrijednost vanjske varijable. Objasnimo prosljeđivanje parametara unutar procedure koristeći sljedeći primjer:

Sub DoCalculation(ByRef A, ByVal B, ByVal C) A = C * 2 B = C / 2 End Sub Sub TestVar Dim V1, V2 V1 = 1 V2 = 2 DoCalculation V1, V2, 10 " Nakon izvođenja postupka DoCalculation " V1 = 20" V2 = 2 krajnja pod

Varijable deklarirane unutar tijela procedure su lokalne i uništavaju se nakon završetka njezina izvođenja. Vrijednosti lokalnih varijabli se ne spremaju.

Popis parametara naveden je u zagradama kada se poziva funkcija ili kada se poziva potprogram pomoću naredbe Call. Dakle, mogli bismo napisati poziv DoCalculation procedure u gornjem primjeru na sljedeći način:

Poziv DoCalculation(V1, V2, 10)

Izvrši izraz

VBScript klase

VBScript vam omogućuje stvaranje novih klasa, koje ćemo ubuduće zvati VB klase. Općenito govoreći, oni nisu punopravne klase u smislu objektno orijentiranog programiranja, jer ne podržavaju nasljeđivanje i, sukladno tome, polimorfizam. Dakle, od tri stupa na kojima se temelji objektno orijentirana paradigma ostaje samo enkapsulacija – mogućnost kombiniranja podataka i metoda unutar jednog entiteta.

Klasa je definirana pomoću sljedeće konstrukcije:

Izjave o nazivu klase End Class

gdje je ime naziv klase, a izjave su jedna ili više definicija varijabli, svojstava, procedura ili funkcija, koje se također nazivaju članovima klase. Imajte na umu da za razliku od Delphija, gdje kod definicije klase sadrži samo deklaracije procedura i funkcija, u VB klasi kod člana je napisan izravno u tekstu klase.

Članovi klase mogu se proglasiti privatnim ili javnim. Prvi su vidljivi samo unutar koda dane klase, dok su drugi dostupni i internom kodu i eksterno. Ako varijabla ili funkcija (procedura) ne sadrži eksplicitnu definiciju javnog ili privatnog, tada se smatra javnom. Procedure ili funkcije deklarirane kao javne unutar bloka klase postaju metode te klase.

Varijable deklarirane kao javne postaju svojstva klase zajedno sa svojstvima deklariranim izravno pomoću konstrukcija Property Get, Property Let, Property Set.

Definiranje svojstava klase

Već smo gore rekli da polja klase, eksplicitno ili implicitno deklarirana kao javna, postaju njezina svojstva. Osim toga, možete kreirati svojstvo klase definiranjem posebnih funkcija za čitanje vrijednosti svojstva (Property Get), kao i za njegovo dodjeljivanje (Property Let ili Property Set).

Sintaksa za definiranje takvih funkcija je sljedeća:

| Private] Property Get name [(arglist)] [ name = izraz] [ name = izraz] End Property Property Let name ( value) End Property Property Set name( reference) End Property

Definiranjem samo jedne funkcije, read ili assign, možete stvoriti svojstvo koje je samo za čitanje ili samo za pisanje. Procedura Property Let koristi se za dodjelu jednostavnih tipova podataka, a procedura Property Set koristi se za prosljeđivanje reference na objekt. Imajte na umu da sve tri funkcije mogu uzeti proizvoljan popis parametara kao ulaz. Na ovaj način možete organizirati, na primjer, svojstva polja prosljeđivanjem indeksa elementa kao argumenta.

Stvaranje i uništavanje instance VB klase

Kreiranje instance VB klase vrši se pomoću operatora New.

Dim X Postavi X = Novo ime klase

Uništavanje prethodno stvorene instance događa se automatski nakon završetka bloka koda gdje je odgovarajuća varijabla deklarirana i pod uvjetom da nema vanjskih referenci na nju. Ako morate ručno uništiti instancu, varijabli morate dodijeliti vrijednost Ništa.

‘ deklariranje varijable i stvaranje instance klase Dim X Set X = New classname ... ‘ korištenje instance klase... ‘ uništavanje instance klase Set X = Notning ...

Inicijaliziranje i prekidanje događaja

Događaj Initialize događa se kada se kreira instanca klase, a događaj Terminate događa se kada se ona uništi. Programer može definirati vlastite rukovatelje podacima događaja. Dolje je primjer korištenja događaja stvaranja i brisanja objekta:

Klasa TestClass " Definicija rukovatelja događajima Initialize. Private Sub Class_Initialize MsgBox("TestClass started") End Sub " Definicija rukovatelja događajima Terminate. Private Sub Class_Terminate MsgBox("TestClass prekinut") End Sub End Class " Stvaranje instance klase TestClass. " Prikazat će se poruka "TestClass started" Set X = New TestClass " Uništavanje instance. " Poruka "TestClass prekinuta" Set će biti prikazan X = ništa

Nastavak

Visual Basic skripta

Zašto su nam potrebne VBS skripte?

VBS skripta moćno je rješenje za automatizaciju radnji korisnika na Windows sustavima. Ova vrsta skripte obično se koristi za:

  • stvaranje složenih scenarija;
  • korištenje objekata iz drugih aplikacija i biblioteka;
  • skrivanje prozora tijekom izvršavanja skripte;
  • šifriranje logike skripte.

VBS skripte uglavnom se koriste za obradu podataka, upravljanje sustavom, rad s korisničkim i računalnim računima, interakciju s uredskim aplikacijama, rad s bazama podataka i druge složene zadatke.

Osnovne odredbe

Ovisno o jeziku skripte, sadržaju i enkripciji, nalaze se sljedeće vrste skripti:

  • vbs - Visual Basic skripta
  • vbe - šifrirana Visual Basic skripta
  • js - Java skripta
  • jse - šifrirana Java skripta
  • wsh - postavke skripte
  • wsf - XML ​​objedinjena skripta

U ovom ću članku pogledati skripte tipa vbs.

Skripte se obično uređuju u Windows Notepadu, ali preporučujem korištenje Notepada2, koji ističe ključne riječi jezika Visual Basic i pomaže u formatiranju tijela skripte. Dakle, vbs skripta je obična tekstualna datoteka pod nazivom *.VBS, koja se može lako uređivati ​​u Notepadu i izvoditi dvostrukim klikom ili pozivanjem naziva u konzoli.

Kao što je gore opisano, skripte se ne kompiliraju, već se interpretiraju. Odnosno, za obradu skripte sustav mora imati VBS jezični interpreter, a u Windowsima postoje čak dva takva interpretera: prozorski WScript i konzolni CScript - oba tumača su Windows Script Host (WSH).

Prema zadanim postavkama, sve skripte se izvršavaju kroz WScript, odnosno nisu potrebne nikakve postavke, ali da biste izvršili skriptu u prozoru konzole, morate je pokrenuti kroz CScript ili postaviti CScript kao zadani tumač. Da biste to učinili, morate pokrenuti sljedeće u naredbenom retku:

CScript //H:CScript

Nakon čega će se sve skripte izvršiti u konzolnom načinu rada. Povratak u prozorski način rada provodi se sljedećom naredbom:

CScript //H:WScript

Sljedeća pravila rade u Visual Basicu:

  • duljina linije nije ograničena;
  • Velika i mala slova nisu osjetljiva;
  • broj razmaka između parametara se ne uzima u obzir;
  • naredbeni redak se može prekinuti, a na mjestu prekida potrebno je umetnuti simbol "_";
  • maksimalna duljina naziva varijable je 255 znakova;
  • komentari su označeni simbolom " ".

" === Zaglavlje informacija o skripti === " Naziv skripte: " naziv skripte; " Datum: " datum izmjene; ​​" Autor: " autor; " Opis: " opis; " === Blok inicijalizacije === Eksplicitna opcija " direktiva , koja zabranjuje automatsko stvaranje " varijabli; Dim " deklaracija varijabli; Dim () " deklaracija nizova; Postavi " povezivanje objekata; " === Glavna logika skripte === " tijelo skripte; " === Funkcije i procedure === " procedure i funkcije;

Varijable

Prema zadanim postavkama, varijable u skriptama deklariraju se automatski prvi put kada se koriste u tijelu skripte, osim ako to nije zabranjeno direktivom Option Explicit. Ako deklarirate Option Explicit direktivu na početku skripte, tada sve varijable moraju biti definirane unaprijed koristeći sljedeće konstrukcije:

Dim " varijabla dostupna svim potprogramima; Javno " varijabla dostupna svim potprogramima; Privatno " varijabla dostupna samo trenutnom programu i njegovim potprogramima;

Konstante su deklarirane na početku skripte pomoću sljedeće konstrukcije:

Konst = " konstanta dostupna svim potprogramima; javna konst = " konstanta dostupna svim potprogramima; Privatna konst = "konstanta dostupna samo trenutnom programu" i njegovim potprogramima.

Tip varijable se dodjeljuje automatski nakon što se u nju unese prva vrijednost. Sljedeći tipovi podataka postoje u Visual Basicu:

  • prazno - neinicijalizirana varijabla;
  • null - prazna varijabla;
  • boolean - logički tip, moguće vrijednosti: False, True ili 0, 1;
  • bajt - 8-bitni cijeli broj bez predznaka, moguće vrijednosti: 0 .. 255;
  • cijeli broj - 32-bitni cijeli broj, moguće vrijednosti: -32768 .. 32767;
  • long - 64-bitni cijeli broj, moguće vrijednosti: -2147483648 .. 2147483647;
  • valuta - novčani tip, moguće vrijednosti: -922337203685477.5808 do 922337203685477.5807;
  • pojedinačni broj s pomičnim zarezom, moguće vrijednosti: -3.402823e38 .. -1.401298e-45 za negativne brojeve i 1.401298e-45 .. 3.402823e38 za pozitivne brojeve;
  • double - broj s pomičnim zarezom, moguće vrijednosti: 1.79769313486232e308 .. -4.94065645841247e-324 za negativne brojeve i 4.94065645841247e-324 .. 1.79769313486232e308 za pozitivne brojeve;
  • datum - datum, moguće vrijednosti: 01/01/1900 i 01/31/9999;
  • string - string varijabla, kapaciteta do 2 milijarde znakova;
  • objekt - pokazivač na objekt;
  • greška - kod greške.

Podaci se mogu provjeriti radi usklađenosti tipa, kao i pretvoriti iz jednog tipa u drugi, ako vrijednosti to dopuštaju. Za operacije na tipovima podataka koriste se sljedeće naredbe:

VarType( ) " vrati broj tipa varijable; ImeName( ) " vrati ime tipa varijable; IsArray( ) " provjera je li varijabla niz; IsDate( ) " provjera je li varijabla datum; IsEmpty( ) " provjerite je li varijabla neinicijalizirana; IsNull( ) " provjera je li varijabla prazna; IsNumeric( ) " provjera je li varijabla broj; IsObject( ) " provjera je li varijabla objekt; CCur( ) " konverzija u vrstu valute; CBool( ) " pretvaranje varijable u Boolean tip; CByte( ) "pretvaranje varijable u tip bajta; CDate( ) "pretvaranje varijable u vrstu datuma; CDbl( ) " pretvaranje varijable u dvostruki tip; CInt( ) "pretvaranje varijable u cjelobrojni tip; CLng( ) "pretvaranje varijable u dugi tip; CSng( ) "pretvaranje varijable u jednu vrstu; CStr( ) "pretvaranje varijable u tip niza.

Kao što je gore spomenuto, Visual Basic ne nameće stroga ograničenja na nazive varijabli, ali u isto vrijeme postoje smjernice za nazive varijabli tako da se tip podataka može lako identificirati u tekstu skripte. Da biste to učinili, preporuča se ispred naziva varijable staviti uvjetne simbole koji određuju vrstu varijable:

  • iValueName - numerički tipovi
  • sValueName - vrsta niza
  • bValueName - Booleov tip
  • dValueName - datum
  • oValueName - objekt
  • cValueName - konstanta
  • aArrayName - niz

U VBS skriptama moguće je koristiti nizove varijabli koje vam omogućuju pohranjivanje popisa, tablica, pa čak i složenijih struktura. Jednodimenzionalni nizovi (liste) mogu biti dinamički, odnosno dopuštaju promjenu svoje dimenzije tijekom rada skripte. Svi nizovi deklarirani su naredbom Dim:

Dim

Primjer korištenja nizova

Dim aMyArray1(10,10) "stvara statički niz dimenzija 11x11; Dim aMyArray2() "stvara dinamički niz; aMyArray1(0,0) = "Pozdrav" " popunjavanje niza; aMyArray1(0,1) = "Ljudi" " popunjavanje niza; aMyArray1(1,0) = "Svijet" " ispunjava niz.

Prije korištenja dinamičkog polja potrebno je naznačiti trenutnu dimenziju pomoću naredbe ReDim, nakon čega se polje može preformatirati bilo gdje u skripti, bilo brisanjem cijelog polja ili spremanjem starih vrijednosti ćelija naredbom Sačuvaj:

ReDim aMyArray2(0) " formiranje niza od jednog elementa; aMyArray2(0) = "Hello" " popunjavanje niza; ReDim aMyArray2(1) " uklanjanje starog niza i formiranje novog od " ostalih elemenata; aMyArray2(0) = "Hello" " popunjavanje niza; aMyArray2(1) = "Svijet" " popunjavanje niza; ReDim Preserve aMyArray2(2) " formiranje niza od tri elementa, ostavljajući " stare vrijednosti elemenata u ćelijama gdje su bile; aMyArray2(1) = "!" " popunjavanje niza; Erase aMyArray2 " brisanje niza.

Da bi saznali dimenziju niza, obično se koristi funkcija UBound, o kojoj će biti riječi u nastavku zajedno s ostalim funkcijama za rad s podacima.

Grananje po stanju

Niti jedan cjeloviti scenarij nije potpun bez grananja koje pomažu u odabiru pravog puta kada je neki temeljni uvjet ispunjen ili ne. Drugim riječima, grane implementiraju logiku skripte. VBS skripte implementiraju nekoliko mehanizama grananja. Pogledajmo ih redom.

Konstrukcija za jednu radnju izvedenu prema uvjetu:

Ako Zatim

Dizajn za nekoliko radnji izvedenih na temelju uvjeta:

Ako Zatim Završi ako

Dizajn vilice:

Ako Zatim Drugo Završi ako

Konstrukcija "račvanje u nekoliko staza" (opcija cIf):

Ako Zatim ElseIf Zatim Drugo Završi ako

U svim navedenim konstrukcijama vrijedi pravilo: “Ako je uvjet zadovoljen , zatim napravite popis radnji , koji se nalaze ispod bloka trenutnog stanja. Ako trenutni uvjet nije ispunjen, idite na popis radnji pod komandom Else."

Konstrukcija "račva u nekoliko staza" (opcija s odabirom):

Odaberite slučaj Slučaj Slučaj Drugi slučaj Kraj Odaberite

U ovoj konstrukciji funkcionira sljedeće pravilo: “Ako vrijednost varijable jednaka je vrijednosti , zatim izvršite popis radnji ispod ove vrijednosti, u protivnom prijeđite na provjeru sljedeće vrijednosti ."

Ciklusi

Petlje se obično koriste za organiziranje ponovljenih radnji ili ponavljanje kroz elemente niza. U VBS skriptama organizirano je nekoliko vrsta petlji: regularna petlja, petlja s nepoznatim brojem ponavljanja, uvjetna petlja.

Redovita petlja je organizirana For - Next strukturom, čiji argumenti određuju parametre kao što je naziv brojača ( ), početna vrijednost brojača ( ), konačna vrijednost brojača ( ) i, ako je potrebno, kontra korak (Korak ).

Za = Do Sljedeći

Ako tijekom rada petlje trebate zaustaviti nabrajanje vrijednosti, to možete učiniti pomoću naredbe Exit For

Za = Do Ako Zatim Izlaz za Sljedeći

Petlja s nepoznatim brojem ponavljanja obično se koristi za ponavljanje kroz sve vrijednosti u kolekciji objekta kada je njegova dimenzija nepoznata. Ova struktura će ponavljati sve vrijednosti ( ) niza proslijeđenog kao parametar petlje ( ).

Za svakoga U Sljedeći

Za svaku oCurrentFile u oFiles WScript.Echo oCurrentFile.Name Next

Uvjetne petlje se koriste za obradu podataka kada je ispunjen neki uvjet. Postoje dvije vrste takvih petlji: s provjerom na početku ciklusa i s provjerom na kraju.

Vrti petlju dok se uvjet ne ispuni, provjeravajući na početku

Radite dok Petlja

Vrti petlju dok se uvjet ne ispuni, provjeravajući na početku

Učinite Do Petlja

Kao što je gore spomenuto, uvjeti se mogu postaviti na kraj petlje. U ovom slučaju, tijelo petlje će se izvršiti barem jednom. Baš kao i u uobičajenim petljama, petlja s uvjetom može se prekinuti naredbom Exit Do:

Čini Ako Zatim Exit Do Petlja do

Ugrađene funkcije

Za rad s podacima i izgradnju njihovih procedura i funkcija programeri Visual Basica već su se pobrinuli za osnovu skripti - osnovne funkcije. VBS skripte funkcioniraju za rad s datumima, nizovima i brojevima, kao i osnovnim ulazno-izlaznim procedurama i mrežnim procedurama. Pogledajmo na brzinu ugrađene funkcije.

Funkcije obrade datuma:

Datum " vraća trenutni datum; Vrijeme " vraća trenutno vrijeme; Sada " vrati trenutni datum i vrijeme; DateDiff( , , ) " vrati razliku između datuma; ImeMjeseca( ) " vrati naziv mjeseca; WeekDayName( , , ) " vrati naziv dana u tjednu; Dan( ) " vrati dan od navedenog datuma; Mjesec( ) " vraća mjesec od navedenog datuma; Godina( ) " vrati godinu od navedenog datuma; Sat( ) " vraća sat od navedenog datuma; Minuta( ) " vraća minutu od navedenog datuma; Second( ) " vrati drugi od navedenog datuma.

Funkcije obrade nizova:

Asc( ) " vrati ANSI kod znaka; Chr( ) " vrati znak prema ANSI kodu; InStr( , ) " vrati poziciju podniza u navedenom " nizu; InStrRev( , ) " vrati poziciju podniza u navedenom " nizu, počevši od kraja niza; Pridružiti( , ) " pretvori niz u niz; Len( ) " vrati dužinu niza; LCase( ) " pretvoriti niz u niz malih " znakova; UCase( ) " pretvoriti niz u niz velikih " znakova; Lijevo( , ) " vraća navedeni broj znakova od " početka niza; Pravo( , ) " vraća navedeni broj znakova s ​​" kraja niza; Sredina ( , , ) " vrati navedeni broj znakova iz " navedenog broja znakova niza; Zamijeniti( , , [, Params]) " zamjena podniza u navedenom nizu; Razmak( ) " nizovi navedenog broja razmaka; Split( , [, Params]) " pretvaranje niza u niz; String( , ) " niz od određenog broja " definiranih znakova; SrtReverse( ) " zrcaliti liniju; Trim( ) " trim bjelinu lijevo i desno od retka; LTrim( ) " trim razmake lijevo od retka; RTrim( ) " skraćuje razmake s desne strane retka.

Matematičke funkcije:

Randomize " inicijalizira mehanizam za odabir slučajnih brojeva (ne vraća ništa); Rnd " vraća slučajnu vrijednost koja nije cijeli broj od 0 do 1; Atn( ) "izračun arktangensa broja; Cos( ) "izračunavanje kosinusa broja; Sin( ) "izračunavanje sinusa broja; Exp( ) "izračun prirodnog logaritma broja; Log( ) "izračunajte decimalni logaritam broja; Sqr( ) "izračunavanje kvadratnog korijena broja; Abs( ) "izračunati apsolutnu vrijednost broja; Hex( ) "izračunaj heksadecimalnu vrijednost broja; Int( ) " zaokruživanje broja; Popravi( ) "izračunati cijeli dio broja.

I, naravno, uz navedene funkcije, skripte podržavaju sve najjednostavnije matematičke i logičke operacije:

  • = - operator dodjele;
  • + - zbroj dvaju brojeva;
  • - - oduzimanje dvaju brojeva;
  • * - množenje dvaju brojeva;
  • / - dijeljenje dvaju brojeva;
  • \ - cjelobrojno dijeljenje dvaju brojeva;
  • Mod - ostatak dijeljenja dvaju brojeva;
  • ^ - potenciranje;
  • & - ulančavanje dva niza;
  • Is - usporedba dva objekta;
  • Eqv - usporedba dvaju izraza;
  • Ne - operacija logičke negacije;
  • And - operacija logičke konjunkcije;
  • Ili - logička operacija disjunkcije;
  • Xor - operacija logičkog isključivanja;
  • Imp je logička operacija implikacije.

Redoslijed operacija je određen kao u svim programskim jezicima: prvo se izvode operacije u zagradama, zatim se računaju funkcije, zatim operacije množenja i dijeljenja, zatim zbrajanja i oduzimanja, a logičke operacije dovršavaju izračun.

Prilagođene funkcije

Skripte napisane u Visual Basicu omogućuju definiranje prilagođenih procedura i funkcija te njihovo pozivanje iz glavnog programa. Praktično nema razlike između procedure i funkcije, razlika je u logičkom značenju ovih rutina: funkcije se obično koriste za izračunavanje neke vrijednosti, a procedure se koriste za izvođenje radnji. Međutim, i procedure i funkcije mogu izvoditi operacije i prosljeđivati ​​vrijednosti glavnom programu. Unatoč tome, ne treba zaboraviti na svrhu ovih potprograma: funkcije za izračune, procedure za akcije.

Funkciju deklarira operator Function, nakon čega slijedi naziv korisnički definirane funkcije, koji se ne smije podudarati ni s jednom rezerviranom riječi jezika Visual Basic, zatim su naznačene varijable koje će biti proslijeđene potprogramu kao parametri - navodeći varijable u ovoj konstrukciji znači dodjeljivanje memorijskih ćelija za varijable potprograma (varijable deklaracije za funkciju). U tijelu potprograma struktura skripte se ne razlikuje od uobičajenog programa (ovdje možete deklarirati dodatne varijable, izvoditi operacije, koristiti druge funkcije i procedure); na kraju tijela mora postojati operator koji dodjeljuje a funkciju na neku vrijednost - ta vrijednost će biti vraćena glavnom programu. Možete prekinuti izvođenje funkcije pomoću naredbe Exit Function, ali u ovom slučaju morate zapamtiti da funkciji dodijelite neku vrijednost, inače će skripta izbaciti pogrešku. Funkcija završava naredbom End Function.

Definicija funkcije

Funkcija () Ako Zatim = Izlaz iz funkcije End If = Završna funkcija

Pozivanje funkcije

= ()

Procedura je definirana slično funkciji, ali s drugačijim -Sub operatorom. Budući da procedura ne vraća nikakve vrijednosti u glavni program, ne postoji izjava o dodjeli prije izlaska iz procedure. Izvođenje procedure možete prekinuti naredbom Exit Sub, a cijela konstrukcija završava operatorom End Sub. Da biste pozvali proceduru u glavnom programu, morate koristiti ključnu riječ Call i naziv funkcije s potrebnim argumentima. (Ključna riječ Call nije obavezna, ali preporučujem da je koristite kako biste izbjegli netočne pozive procedura.)

Definicija postupka

Pod () Ako Zatim Izlaz Sub End If End Sub

Pozivanje postupka

()

Usput, procedure i funkcije trebaju se nalaziti na kraju skripte.

Dok potprogram radi, vrijednosti varijabli u glavnom dijelu skripte se ne mijenjaju, čak i ako potprogram sadrži varijable istog imena. Kako bi potprogram mogao mijenjati vrijednosti glavnih varijabli skripte, potrebno je postaviti svojstvo varijable kao ByRef u argumentima potprograma. Prema zadanim postavkama, sve varijable definirane su svojstvom ByVal.

Pod (Autor Ref [, argumenti]) = End Sub

U ovom slučaju argument proslijeđen referencom na memorijsku ćeliju - vrijednost varijable se mijenja u glavnoj skripti. Drugim riječima, korištenjem parametra ByRef, procedura se pretvara u funkciju - potprogram vraća rezultat izračuna u glavni program.

Rješavanje pogrešaka u izvršavanju skripte

Prema zadanim postavkama, skripta automatski obrađuje sve pogreške, a ako se dogodi pogreška, skripta prestaje raditi. Da biste onemogućili automatsko rukovanje pogreškama, morate upotrijebiti posebnu direktivu On Error Resume Next, koja onemogućuje automatsko rukovanje pogreškama i nastavlja skriptu čak i ako postoje pogreške. Za ručno rukovanje pogreškama morate pristupiti ugrađenom Err objektu koji pohranjuje status pogreške. Objekt Err ima sljedeća svojstva i metode:

Broj " vraća broj zadnje greške; Opis " vraća opis zadnje greške; Clear " brisanje objekta Err; Raise " pozivanje testne pogreške.

Primjer ručnog rješavanja grešaka:

On Error Resume Next iTotalPoints = InputBox("Unesite ukupan broj bodova") iNumberOfTests = InputBox("Unesite broj testova") iAvarage = iTotalPoints / iNumberOfTests Select Case Err.Number Case 0 " nema pogrešaka; WScript.Echo "Average rezultat = " & CStr(iAvarage) Slučaj 11 " dijeljenje s nulom; WScript.Echo "Broj testova ne može biti nula" Slučaj 13 "neusklađenost tipa; WScript.Echo "Unijeli ste nenumeričku vrijednost "Case Else" nema grešaka; WScript.Echo "Nepoznata pogreška WScript.Quit" Kraj odabira

Objekti, njihove metode i svojstva

VBS skripte, kao i njihov roditelj Visual Basic, objektno su orijentirani programski jezik, odnosno glavni koncept je koncept objekata i klasa

Klasa je tip koji opisuje strukturu objekata. Objekt znači nešto što ima određeno ponašanje i način predstavljanja; objekt je instanca klase. Klasa se može usporediti s nacrtom prema kojem se kreiraju objekti. Tipično, klase su dizajnirane na takav način da njihovi objekti odgovaraju objektima domene.

Dakle, da biste radili s objektom, prvo ga morate stvoriti koristeći klase iz potrebne biblioteke:

set = Stvori objekt( .)

Objekt možete izbrisati tako da mu dodijelite vrijednost Ništa:

set = Ništa

Svi objekti s kojima radi Windows Script Host imaju metode i svojstva. Da biste pristupili metodi, morate navesti objekt, nakon čega slijedi točka - metoda s potrebnim parametrima.

. [, Param2, ..., ParamN] Poziv .([, Param2, ..., ParamN])

Slična je situacija sa svojstvima, ali se svojstva mogu dodijeliti i učitavati u varijable i druga svojstva, međutim, trebali biste uzeti u obzir tip podataka varijabli i svojstava, inače će skripta izbaciti pogrešku nekompatibilnosti tipa podataka.

. = . = . = .

Primjer. Stvaranje objekta datotečnog sustava, pozivanje metode stvaranja mape, brisanje objekta.

Postavi oFSO = CreateObject("Scripting.FileSystemObject") Pozovi oFSO.CreateFolder("C:\Test") Postavi oFSO = Ništa

Imajte na umu da se izraz "objekt" odnosi na logiku skripte, a ne na logiku datotečnog sustava. Odnosno, kada kažemo "brisanje objekta", mislimo na logički objekt skripte koji ni na koji način ne utječe na uklanjanje bilo kojeg dijela datotečnog sustava.

Kako biste saznali koje biblioteke postoje u vašem operativnom sustavu, klase uključene u biblioteke, njihove metode i svojstva, možete koristiti preglednik objekata, na primjer iz Microsoft Worda:

  1. Pokrenite MS Word.
  2. U glavnom izborniku odaberite Alati -> Makro -> Visual Bacis Editor
  3. U prozoru za uređivanje makroa odaberite Pogled -> Preglednik objekata

Ako knjižnica nije prikazana na popisu, može se povezati putem izbornika Alati -> Reference.

Skripte imaju metode koje nisu dio nijedne klase, dostupne su izravno u tijelu skripte:

MsgBox( [, Params]) " prikazuje poruku prozora na ekranu; InputBox( [, Params]) " prikazuje dijaloški okvir na zaslonu.

Primjer prikazivanja dijaloškog okvira koji traži tekst, a zatim prikazivanja poruke prozora s unesenim tekstom.

MyValue = InputBox("Unesite tekst", "Prvi prozor", "Ovdje se mora unijeti tekst") MyResult = MsgBox(MyValue, 1, "Drugi prozor")

Metode i svojstva WScript korijenske klase

Metode i svojstva korijenske klase WScript ne zahtijevaju stvaranje objekta - automatski su dostupni za korištenje izravno u tijelu skripte.

CreateObject( .) " stvaranje objekta; GetObject( ) " povezivanje objekta iz datoteke; ConnectObject( , ) "poveži se na događaje postojećeg objekta; DisconnectObject( ) "odspojiti se od događaja objekta; Echo() " prikazati poruku na ekranu; Argumenti " vraćaju niz argumenata naredbenog retka skripte; Ime " vraćaju naziv tumača skripte; Path " vraća putanju do tumača skripte; FullName " vraća puni naziv tumača skripte; Version " vraća verziju tumača skripte; BuildVersion " vraća verziju međugradnje tumača skripte; ScriptName " vraća naziv datoteke skripte; ScriptFullName " vraća puni naziv datoteke skripte; Interaktivno " postaviti ili vratiti interaktivni način rada skripte; mirovanje( ) "pauzira rad na određeni broj milisekundi; Quit "završava skriptu.

O korištenju ovih metoda i svojstava raspravljat ćemo detaljnije u primjerima drugih klasa.

Metode i svojstva klase Shell

Za rad s operativnim sustavom koristi se posebna klasa Shell koja vam omogućuje izvođenje takvih operacija kao što su pokretanje programa, promjena registra, stvaranje prečaca, pristup sistemskim mapama i sistemskim varijablama te pristup zapisniku sustava. Dakle, metode i svojstva klase Shell:

ExpandEnvironmentStrings( ) " vrati vrijednost tražene sistemske varijable; EnviEnvironment( ) " vraća niz sistemskih varijabli; CreateShortcut( ) " stvaranje prečaca; Skočni prozor( [, Params]) " prikazati poruku prozora na ekranu; RegRead( ) " pročitajte vrijednost iz registra; RegWrite( ,[, Tip]) " pisanje vrijednosti u registar; RegDelete( ) " uklanjanje vrijednosti iz registra; LogEvent( ,) " zabilježi događaj u zapisnik sustava; Pokreni( [, Params]) " pokretanje programa u novom procesu; Exec( ) " pokretanje programa u podređenoj konzoli; AppActivate( ) "aktivacija prozora; SendKeys( <Keys>) " slanje znakova u aktivni prozor; CurrentDirectory " postavlja ili vraća trenutni direktorij; SpecialFolders() " vraća niz servisnih mapa ili putanju " tražene servisne mape.</p><p>Primjer. Korištenje metoda i svojstava klase Shell.</p><p>" Stvaranje objekta klase Shell Set oShell = Wscript.CreateObject("WScript.Shell") " Pokretanje kalkulatora oShell.Run("Calc.exe") " Odgoda WScript.Sleep(100) " Pokretanje bilježnice oShell.Run ("Notepad.exe ") " Odgodi WScript.Sleep(100) " Prebaci se na prozor kalkulatora oShell.AppActivate "Calculator" " Odgodi WScript.Sleep(100) " Simuliraj pritiske tipki oShell.SendKeys("1(+)2(= )") " Putanja primanja do radne površine sDesktopPath = oShell.SpecialFolders("Desktop") " Stvaranje prečaca objekta Set oLink = oShell.CreateShortcut(sDesktopPath & "\Test.lnk") " Postavljanje prečaca oLink.TargetPath = WScript .ScriptFullName oLink.WindowStyle = 1 oLink .Hotkey = "CTRL+SHIFT+T" oLink.IconLocation = "notepad.exe,0" oLink.Description = "Test link" oLink.WorkingDirectory = sDesktopPath oLink.Save " Stvaranje objekta okruženja i unos svojstava sustava u njega Set oSysEnv = oShell.Environment("SYSTEM") " Prikaži poruku o broju procesora na ekranu MyResult = oShell.Popup("Broj procesora: " & oSysEnv("NUMBER_OF_PROCESSORS"), _ 3, "Poruka", 0) " Dobivanje putanje mape Windows i prikazivanje poruke na ekranu MyResult = oShell.Popup("Windows direktorij: " & _ oShell.ExpandEnvironmentStrings("%WINDIR%"), 3, "Poruka" , 0) " Čitanje ključa registra i prikazivanje njegove vrijednosti na WScript zaslonu. Echo oShell.RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion\ProductID") " Zapišite vrijednost niza u registar MyResult = oShell.RegWrite( "HKCU\ScriptEngine\Value", "My Value") " Upišite numeričku vrijednost u registar MyResult = oShell.RegWrite("HKCU\ScriptEngine\Key", 1, "REG_DWORD") " Brisanje ključa registra MyResult = oShell. RegDelete("HKCU\ScriptEngine\") " Zapisivanje događaja u zapisnik sustava MyResult = oShell.LogEvent(0 , "Testna skripta dovršena")</p><h3>Metode i svojstva klase Network</h3> <p>Kao što smo već vidjeli, VBS skripte mogu raditi s Windows ljuskom, ali to nije njihova jedina sposobnost. Korištenjem klase Network možete pristupiti mrežnim objektima i upravljati njima. Pogledajmo pobliže klasu mreže:</p><p>ComputerName " vrati naziv računala; UserDomain " vrati naziv domene; UserName " vraća korisničko ime; EnumNetworkDrives " vraća popis mapiranih mrežnih pogona; MapNetworkDrive( <LocalName>, <RemoteName>, ) "povezivanje mrežnog resursa; RemoveNetworkDrive( <Name>, , ) "onemogući mrežni resurs; EnumPrinterConnections" vraća popis mrežnih pisača; AddWindowsPrinterConnection( <PrinterPath>) "spajanje mrežnog pisača; AddPrinterConnection( <LocalName>, <RemoteName>[, UpdateProfile, User, Password] " spojite mrežni pisač na navedeni priključak; RemovePrinterConnection( <Name>[,Force, UpdateProfile]) " onemogućavanje mrežnog pisača; SetDefaultPrinter( <PrinterName>) "odaberite zadani pisač;</p><p>Primjer. Korištenje metoda i svojstava klase Network.</p><p>" Stvaranje objekta klase Network Set oNetwork = WScript.CreateObject("WScript.Network") " Prikaz poruke o nazivu računala WScript.Echo "Computer Name = " & oNetwork.ComputerName " Prikaz poruke o nazivu računala trenutni korisnik WScript.Echo "Korisničko ime = " & oNetwork.UserDomain & "\" & oNetwork.UserName " Mapiranje mrežnog pogona oNetwork.MapNetworkDrive "Z:" "\\Server\Share" " Dobivanje zbirke mapiranih mrežnih pogona Postavi oDrives = oNetwork.EnumNetworkDrives " Prikaz poruka o mapiranim mrežnim pogonima Za i=0 To oDrives.Count -1 korak 2 WScript.Echo "Drive " & oDrives.Item(i) & " = " & oDrives.Item(i+1) Dalje " Uklanjanje mrežnog pogona oNetwork.RemoveNetworkDrive "Z:" " Povezivanje mrežnog pisača oNetwork.AddPrinterConnection "LPT1", "\\Server\Printer" " Postavljanje zadanog pisača oNetwork.SetDefaultPrinter "\\Server\Printer" " Dobivanje kolekcija povezanih pisača Postavite oPrinters = oNetwork.EnumPrinterConnections</p><h3>Metode i svojstva klase FileSystemObject</h3> <p>Vrlo često u scenarijima postoje takvi slučajevi kada je potrebno stvoriti, izbrisati, premjestiti ili promijeniti nešto na disku računala. Ovaj problem može riješiti klasa FileSystemObject, dizajnirana za rad sa datotečnim sustavom. Sljedeći su objekti koje ova klasa može stvoriti:</p> <ul><li>FileSystemObject - glavni objekt koji vam omogućuje stvaranje, brisanje, upravljanje diskovima, mapama i datotekama općenito;</li> <li>Pogon - objekt koji vam omogućuje prikupljanje informacija o pogonima sustava;</li> <li>Pogoni - objekt koji pohranjuje popis pogona sustava;</li> <li>Mapa - objekt koji vam omogućuje stvaranje, brisanje, premještanje mapa, kao i prikupljanje informacija o njima i njihovom sadržaju;</li> <li>Mape - objekt koji pohranjuje popis podmapa navedene mape;</li> <li>Datoteka - objekt koji vam omogućuje stvaranje, brisanje, premještanje datoteka, kao i prikupljanje informacija o njima;</li> <li>Datoteke - objekt koji pohranjuje popis datoteka u navedenoj mapi;</li> <li>TextStream je objekt koji vam omogućuje čitanje i stvaranje tekstualnih datoteka.</li> </ul><p>Metode i svojstva klase FileSystemObject (glavni objekt):</p><p>BuildPath( <Path>, <Name>) " dodaje naziv navedenoj stazi; GetAbsolutePathName( <PathSpec>) " vraća punu putanju; GetBaseName( <Path>) " vraća naziv mape ili datoteke (bez ekstenzije ") u navedenoj stazi; GetDrive( <DriveSpec>) " stvara objekt Drive; GetDriveName( <Path>) " vraća naziv pogona u navedenoj stazi; GetExtensionName( <Path>) " vraća ekstenziju datoteke u " navedenoj stazi; GetFile( <FileSpec>) " stvara objekt File; GetFileName( <PathSpec>) " vraća naziv datoteke (bez ekstenzije) " u navedenoj stazi; GetFolder( <FolderSpec>) " stvara objekt Folder; GetParentFolderName( <Path>) " vraća naziv mape u kojoj je " datoteka ili mapa na navedenoj stazi pohranjena; GetSpecialFolder( <FolderSpec>) " stvara objekt Folder za navedenu " servisnu mapu; GetTempName " vraća nasumično generirani naziv datoteke; PogonPostoji( <DriveSpec>) " provjerava postojanje diska; FolderExists( <FileSpec>) " provjerava postojanje mape; CopyFolder( <Source>, <Destination>[, Overwrite]) " kopira mapu; MoveFolder( <Source>, <Destination>) " premješta mapu; DeleteFolder( <FolderSpec>[, Force]) " briše mapu; CreateFolder( <FolderName>) " stvara mapu; FileExists( <Filespec>) " provjerava postojanje datoteke; CopyFile( <Source>, <Destination>[, Overwrite]) " kopira datoteku; MoveFile( <Source>, <Destination>) " premješta datoteku; DeleteFile( <FileSpec>[, Force]) " briše datoteku; CreateTextFile( <FileName>[, Overwrite, UnioCode]) " stvara tekstualnu datoteku; OpenTextFile( <FileName>[, IOMode, Create, Format]) " otvara tekstualnu datoteku za čitanje ili " pisanje.</p><p>Objekti Drives, Folders and Files klase FileSystemObject pohranjuju informacije o pogonima, mapama i datotekama i uglavnom se koriste za prikupljanje informacija o sustavu datoteka. Imaju samo dva svojstva:</p><p>Count " vraća broj stavki u kolekciji; Item( <ObjectName>) " vraća zapis s navedenim indeksom iz zbirke (ne koristi se), " petlja Za svaki koristi se za ponavljanje kroz elemente zbirke.</p><p>Da bi bilo jasnije što je zbirka objekata, razmotrite primjer prikaza popisa datoteka u korijenu pogona C:</p><p>" Stvaranje objekta klase FileSystemObject Set oFSO = CreateObject("Scripting.FileSystemObject") " Stvaranje objekta skupa mapa oFolder = oFSO.GetFolder("C:\") " Dobivanje kolekcije datoteka Set oFilesCollection = oFolder.Files " Dobivanje broja elemenata u kolekciji sResult = sResult & oFilesCollection.Count & " datoteke u C:\" & vbCrLf " Pročitajte atribute svake datoteke iz kolekcije Za svaku oFile u oFilesCollection sResult = sResult & oFile.Name & vbTab sResult = sResult & oFile.Size & vbCrLf Next " Ispis rezultata na zaslon MsgBox(sResult)</p><p>Objekt Drive omogućuje pristup svojstvima lokalnog ili mrežnog pogona:</p><p>AvailableSpace " vraća količinu slobodnog prostora na disku dostupnom korisniku; DriveLetter " vraća slovo pogona; DriveType " vraća vrstu pogona; FileSystem " vraća tip datotečnog sustava pogona; FreeSpace " vraća količinu slobodnog prostora na disku; IsReady " vraća dostupnost diska; Path " vraća stazu do diska; RootFolder " stvara objekt Folder koji pokazuje na korijen diska; SerialNumber " vraća serijski broj diska; ShareName " vraća mrežni naziv diska; TotalSize " vraća kapacitet diska u bajtovima; VolumeName " vraća ili postavlja oznaku diska.</p><p>Objekt Folder omogućuje pristup svim svojstvima mape i također vam omogućuje izvođenje radnji na njoj:</p><p>Attributes " vraća atribute mape; DateCreated " vraća datum stvaranja mape; DateLastAccessed " vraća datum zadnjeg pristupa mapi; DateLastModified " vraća datum kada je mapa izmijenjena; Pogon " vraća slovo pogona mape; Datoteke " vraća kolekciju datoteka u mapi; IsRootFolder " vraća True ako je mapa korijen diska; Name " vraća naziv mape; ParentFolder " stvara objekt Folder koji pokazuje na " nadređenu mapu; Path " vraća putanju mape; ShortName " vraća naziv mape u formatu 8.3; ShortPath " vraća putanju do mape u formatu 8.3; Veličina " vraća veličinu mape; SubFolders " vraća kolekciju podmapa; Type " vraća vrstu mape; Kopirati( <Destination>[, Prepiši]) " kopira mapu; Premjesti( <Destination>) " pomiče mapu; Delete( <Force>) " briše mapu; CreateTextFile( <FileName>[, Overwrite, UniCode]) " stvara tekstualnu datoteku u mapi.</p><p>Objekt File sličan je objektu Folder - omogućuje pristup svim svojstvima datoteke, a također vam omogućuje izvođenje radnji na njoj:</p><p>Attributes " vraća atribute datoteke; DateCreated " vraća datum stvaranja datoteke; DateLastAccessed " vraća datum zadnjeg pristupa datoteci; DateLastModified " vraća datum kada je datoteka izmijenjena; Drive " vraća slovo pogona datoteke; Name " vraća naziv datoteke; ParentFolder " stvara objekt Folder koji pokazuje na " nadređenu mapu; Path " vraća putanju do datoteke; ShortName " vraća naziv datoteke u formatu 8.3; ShortPath " vraća putanju do datoteke u formatu 8.3; Veličina " vraća veličinu datoteke; Vrsta " vraća vrstu datoteke; Kopiraj( <Destination>[, Prepiši]) " kopira datoteku; Premjesti( <Destination>) " premješta datoteku; Delete( <Force>) " briše datoteku; OpenAsTextStream() " otvara tekstualnu datoteku za čitanje ili pisanje.</p><p>Objekt TextStream je alat za pristup sadržaju datoteke. Možete ga koristiti za čitanje i izmjenu datoteke:</p><p>AtEndOfLine " pokazuje da li je dosegnut kraj retka; AtEndOfStream " pokazuje da li je dosegnut kraj retka; Stupac " vraća broj stupca u kojem se nalazi kursor za čitanje; Linija " vraća broj retka u kojem se nalazi kursor za čitanje; Zatvori " zatvara datoteku - oslobađa je za druge procese; Read( <CharactersNumber>) " čita navedeni broj znakova, počevši od pozicije " kursora za čitanje; ReadAll " čita cijelu datoteku; ReadLine " čita liniju u kojoj se nalazi kursor za čitanje; Preskočiti( <CharactersNumber>) " preskače navedeni broj znakova, počevši od pozicije " kursora za čitanje; SkipLine " preskače red u kojem se nalazi kursor za čitanje; Write( <String>) " piše redak; WriteLine( <String>) " piše red i pomiče kursor za pisanje u sljedeći red; WriteBlankLines( <Lines>)" ispisuje navedeni broj praznih redaka.</p><p>Upoznali smo se sa svim metodama i svojstvima klase FileSystemObject, pogledajmo primjer korištenja ove klase:</p><p> " Postavljanje stalnih kodova za sistemske mape Const WindowsFolder = 0 Const SystemFolder = 1 Const TemporaryFolder = 2 " Postavljanje konstantnih kodova za vrste pristupa tekstualnoj datoteci Const ForReading = 1 Const ForWriting = 2 Const ForAppending = 8 " Stvaranje objekta klase FileSystemObject Set oFSO = CreateObject(" Scripting.FileSystemObject") " Dohvaćanje kolekcije pogona Set DrivesCollection = oFSO.Drives " Obrada svakog pogona da bi se dobila njegova oznaka ili naziv mreže Za svaki oDrive u DrivesCollection sResult = sResult & oDrive.DriveLetter & ": " If oDrive.DriveType = Remote Then sResult = sResult & oDrive.ShareName & vbCrLf ElseIf oDrive.IsReady Then sResult = sResult & oDrive.VolumeName & vbCrLf Else sResult = sResult & vbCrLf End If Next " Prikaz rezultata Wscript.Echo(sResult) " Stvaranje pogonskog objekta C: Postavite oDrive = oFSO.GetDrive("C") sResult = oDrive.DriveLetter & ": - " " Dobivanje tipa pogona C: Odaberite Case oDrive.DriveType Slučaj 0: sResult = sResult & "Unknown - " Slučaj 1: sResult = sResult & "Removable - " Slučaj 2: sResult = sResult & "Fixed - " Slučaj 3: sResult = sResult & "Network - " Slučaj 4: sResult = sResult & "CD-ROM - " Slučaj 5: sResult = sResult & "RAM Disk - " End Select " Odredite je li disk dostupan i dohvatite njegova svojstva If oDrive.IsReady Then sResult = sResult & "Ready" & vbCrLf sResult = sResult & "FileSystem is " & oDrive.FileSystem & vbCrLf sResult = sResult & "Available Space: " & _ FormatNumber( oDrive.AvailableSpace/1024, 0) & " Kbytes" Else sResult = sResult & "Not ready" End If " Prikaz rezultata na zaslonu Wscript.Echo(sResult) " Stvaranje usluge objekt mape (mapa privremenih datoteka Windows) Postavite oTempFolder = oFSO. GetSpecialFolder(TemporaryFolder) " Stvorite objekt tekstualne datoteke (i stvorite ga u korijenu pogona C:) Postavite oFile = oFSO.CreateTextFile("C:\TestFile.txt) ", True) " Pisanje u tekstualnu datoteku oFile.WriteLine("Ovo je test.") oFile.WriteLine(sResult) " Zatvara tekstualnu datoteku i oslobađa je za druge procese oFile.Close " Provjerava prisutnost datoteke u mapi privremenih datoteka sustava Windows briše datoteku If oFSO.FileExists(oFSo.BuildPath(oTempFolder.Path, "TestFile.txt")) Then _ oFSO.DeleteFile(oFSo.BuildPath(oTempFolder.Path, "TestFile.txt") ) " Stvorite objekt datoteke Postavite oFile = oFSO.GetFile("C:\TestFile.txt") " Premjestite datoteku u mapu privremenih datoteka sustava Windows oFile.Move(oFSo.BuildPath(oTempFolder.Path, "TestFile.txt")) " Promjena atributa datoteke Ako je oFile.Attributes i 32 Zatim oFile. Attributes = oFile.attributes - 32 Wscript.Echo("Arhivski bit je izbrisan") Else oFile.Attributes = oFile.attributes + 32 Wscript.Echo("Arhivski bit je postavljen") End If sResult = oFile.Path & vbCrLf & oFile .DateLastModified & ":" & vbCrLf " Stvorite objekt toka otvaranjem datoteke za čitanje Postavite oTestFile = oFSO.OpenTextFile(oFile.Path, ForReading, False) " Čitajte tok dok se ne naiđe na kraj Do Dok oTestFile.AtEndOfStream<>True sResult = sResult & oTestFile.ReadLine Loop " Zatvara tekstualnu datoteku i oslobađa je za druge procese oTestFile.Close " Ispisuje poruku na ekran Wscript.Echo(sResult)</p><h3>Scenarij "Brisanje starih datoteka"</h3> <p>Ova skripta dizajnirana je za čišćenje sustava od zastarjelih datoteka u Windows privremenim imenicima i korisničkim profilima. U ovom primjeru možete vidjeti kako rade gotovo sve gore navedene konstrukcije: struktura skripte, imenovanje varijabli, rad s nizovima i zbirkama, ručno rukovanje pogreškama, čitanje varijabli sustava, stvaranje tekstualne datoteke za bilježenje skripte, rad sa sustavom datoteka , korištenjem postupaka.</p><p> " ==== Zaglavlje informacija o skripti ==== " naziv skripte: Temp čišćenja " verzija: 1.0 " datum: 16.07.08 " autor: Bochkarev Vitaly " opis: Skripta briše zastarjele privremene datoteke s računala " == == Glavna logika skripte ==== " Omogući ručno rukovanje pogreškama On Error Resume Next " Vremenski interval konstantan kada se datoteke smatraju ustajalim Const PurgeTime = 14 " dana " Iznimke - korisnički profili koji se ne bi trebali obrađivati ​​Dim aExceptions(3) aExceptions( 0) = " Zadani korisnik" aExceptions(1) = "LocalService" aExceptions(2) = "NetworkService" aExceptions(3) = "Svi korisnici" " Stvaranje objekata ljuske i datotečnog sustava Postavi oShell = CreateObject("wscript.shell") Postavite oFSO = CreateObject ("Scripting.Filesystemobject") " Definiranje staza servisne mape sProgramFiles = oShell.ExpandEnvironmentStrings("%ProgramFiles%") sWinDir = oShell.ExpandEnvironmentStrings("%WinDir%") sWinTempFolder = sWinDir & "\Temp" sDocuments = "C:\ Dokumenti i postavke" " Stvaranje datoteke dnevnika skripte sLogFileName = sWinTempFolder & "\PurgeTemp_" & Datum sLogFileName = Zamijeni(sLogFileName, ".", "_") sLogFileName = Zamijeni(sLogFileName, "/", "_ ") Postavite oLogFile = oFSO.CreateTextFile(sLogFileName & ".log",true) oLogFile.WriteLine "========== Započni čišćenje ==========" " Čišćenje Windowsa privremena mapa oLogFile.WriteLine vbCrLf & "========== Windows privremena mapa ==========" PurgeFolder(sWinTempFolder) " Čišćenje privremene mape korisničkog profila i internetskih datoteka oLogFile. WriteLine vbCrLf & _ "===== ===== Privremena mapa korisnika i privremene internetske datoteke korisnika ==========" Postavi oDocuments = oFSO.GetFolder(sDocuments) Postavi colProfiles = oDocuments.Podmape za Svaki oProfile u colProfiles bFlag = false Za svaki sException u aExceptions if InStr(oProfile.Path,sException) > 0 then bFlag = true izlaz za kraj if Next If bFlag = False Then PurgeFolder(oProfile.Path & "\Local Settings\Temp" ) PurgeFolder(oProfile.Path & "\Local Settings\Temporary Internet Files") End If Next " Brisanje NOD32 karantene oLogFile.WriteLine vbCrLf & "========== NOD32 karantena ========= ==" sQuarantine = sProgramFiles & "\Eset \Infected" PurgeFolder(sQuarantine) " Zatvaranje datoteke dnevnika oLogFile.WriteLine vbCrLf & "========== Zaustavi čišćenje =========== " oLogFile.Close " Postupak PurgeFolder - brisanje starih datoteka Sub PurgeFolder(sFolderPath) " Stvaranje objekta skupa mapa oFolder = oFSO.GetFolder(sFolderPath) " Dohvaćanje kolekcije datoteka Set colFiles = oFolder. Datoteke " Obradi svaku datoteku u kolekciji Za svaku oDatoteku u colFiles " Provjerite je li datoteka zastarjela If (Date-oFile.DateLastModified) > PurgeTime i (Date-oFile.DateCreated) > _ PurgeTime Then " Napišite poruku zapisnik skripte oLogFile.Writeline oFile.Path & vbTab & oFile.DateCreated " Brisanje zastarjele datoteke oFSO.DeleteFile oFile.Path, True " Provjera grešaka ako je err.Number<>0 zatim " Napišite poruku o pogrešci u dnevnik skripte oLogFile.Writeline "-----> Greška # " & CStr(Err.Number) _ & " " & Err.Description " Obrišite grešku Err. Obriši kraj ako " Pauza 20 milisekundi WScript.Sleep 20 End if Next " Primanje kolekcije podmapa Set colSubFolders = oFolder.SubFolders " Obrada svake podmape za svaku oSubFolder u colSubFolders " Rekurzivno pozivanje procedure za brisanje starih datoteka - potprogram poziva " sebe PurgeFolder(oSubFolder.Path ) " Provjera veličine mape If oSubFolder.Size = 0 Then " Napišite poruku u zapisnik skripte oLogFile.Writeline oSubFolder.Path & vbTab & oSubFolder.DateCreated " Izbrišite praznu mapu oFSO.DeleteFolder oSubFolder.Path " Provjerite ima li pogrešaka Ako err .Broj<>0 zatim " Napišite poruku o pogrešci u zapisnik skripte oLogFile.Writeline "-----> Error # " & CStr(Err.Number) _ & " " & Err.Description " Obrišite pogrešku Err.Clear End if End if Sljedeći kraj Sub</p><p>Do sada smo naučili osnove Visual Basic Scripta. Sažmimo i odredimo prednosti i nedostatke takvih scenarija:</p> <ul><li>skripte ne zahtijevaju kompilaciju i njihov kod se može uređivati ​​u bilo kojem trenutku;</li> <li>VBS skripte praktički su neograničene u funkcionalnosti i mogu koristiti različite sistemske biblioteke i objekte iz drugih aplikacija;</li> <li>VBS datoteke mogu se izvršavati u konzolnom ili prozorskom načinu, tako da korisnik može kontrolirati vidljivost napretka skripte;</li> <li>VBS skripte omogućuju korištenje prilagođenih procedura i funkcija;</li> <li>ovaj jezik je idealan za rad sa string i numeričkim varijablama, datumima, kao i za obradu tekstualnih datoteka, upravljanje sustavom i domenom;</li> <li>VBS skripte je teško napisati i zahtijevaju vještine programiranja;</li> <li>Takve skripte rade samo na Windows operativnim sustavima.</li> </ul><p>Vitalij Bočkarev</p> <h2>vanjske poveznice</h2> <p>Odjeljak vanjskih poveznica, odnosno poveznica na druge stranice s kojima ovaj resurs nema nikakve veze, osim toga, vlasnik stranice ne snosi nikakvu odgovornost za dostupnost ovih izvora i njihov sadržaj.</p> <p>Nekako sam potpuno pretrčao i nisam vam rekao za dva <b>Funkcije dijaloškog okvira: MsgBox i InputBox</b>. U ovoj vrlo kratkoj lekciji reći ću vam o svim gadgetima za ove dvije funkcije. Postoje i drugi načini za stvaranje dijaloških okvira, ali to će zahtijevati <b>WSH objekti</b>, o čemu će biti riječi u narednim lekcijama.</p> <h2>Funkcija MsgBox</h2> <p>Najčešća funkcija za prikaz poruke. Naravno da je kompliciranije od <b>Odjek WScript objekta</b>, ali ni njoj ne treba predmet. <br><i>Sintaksa:</i> <b>MsgBox (Prompt[, gumbi][, naslov][, datoteka pomoći, kontekst])</b></p> <ul><li><b>Potaknuti</b>- Tekst poruke.</li> <li><b>Gumbi</b>— Prikazani gumbi i način rada prozora.</li> <li><b>Titula</b>- Naziv prozora.</li> <li><b>Helpfile</b>— datoteka pomoći (*.hlp)</li> <li><b>Kontekst</b>— Broj odjeljka pomoći.</li> </ul><p>Parametar <b>Gumbi</b> može istovremeno poprimiti više vrijednosti. Da biste ih označili, upotrijebite znak “+” ili jednostavno upotrijebite zbroj vrijednosti. Vrijednosti za ovaj parametar date su u nastavku.</p> <h3>Konstante za dijaloške okvire (gumbi za prikaz):</h3> <ul><li><b>vbOKOnly</b>— Vrijednost 0. Prikažite gumb OK.</li> <li><b>vbOKOdustani</b>— Vrijednost 1. Gumbi za prikaz: U redu i Odustani.</li> <li><b>vbAbortRetryIgnore</b>— Vrijednost 2. Gumbi za prikaz: Prekid, Ponovi i Preskoči.</li> <li><b>vbDaNeOdustani</b>— Vrijednost 3. Gumbi za prikaz: Da, Ne i Odustani.</li> <li><b>vbDaNe</b>— Vrijednost 4. Gumbi za prikaz: Da i Ne.</li> <li><b>vbPokušajOdustani</b>— Vrijednost 5. Gumbi za prikaz: Ponovi i Odustani.</li> </ul><h3>Konstante za dijaloške okvire (prikazane ikone):</h3> <ul><li><b>vbKritično</b>— Vrijednost 16. Prikažite ikonu Stop Mark.</li> <li><b>vbPitanje</b>— Vrijednost 32. Prikažite ikonu upitnika.</li> <li><b>vbUsklik</b>— Vrijednost 48. Prikažite ikonu uskličnika.</li> <li><b>vbInformacija</b>— Vrijednost 64. Prikažite ikonu informacijske oznake.</li> </ul><h3>Konstante za dijaloške okvire (zadani gumbi):</h3> <ul><li><b>vbDefaultButton1</b>— Vrijednost 0. Prvi gumb odabran je prema zadanim postavkama.</li> <li><b>vbDefaultButton2</b>— Vrijednost 256. Drugi gumb odabran je prema zadanim postavkama.</li> <li><b>vbDefaultButton3</b>— Vrijednost 512. Treći gumb odabran je prema zadanim postavkama.</li> <li><b>vbDefaultButton4</b>— Vrijednost 768. Četvrti gumb odabran je prema zadanim postavkama.</li> </ul><h3>Konstante za dijaloške okvire (način prozora):</h3> <ul><li><b>vbApplicationModal</b>— Vrijednost 0. Prikazuje se u modalnom načinu.</li> <li><b>vbSystemModal</b>— Vrijednost 4096. Prikazuje se u modalnom načinu i nalazi se na vrhu svih aplikacija.</li> </ul><h3>ostalo:</h3> <ul><li><b>Vrijednost 262144</b>- Na vrhu svih prozora.</li> <li><b>Vrijednost 524288</b>— Tekst u prozoru prikazan je na desnom rubu.</li> </ul><p>Vrijedno je napomenuti da je parametar <b>Gumbi</b> ne može prihvatiti više vrijednosti iz iste kategorije. Ove vrijednosti će se jednostavno zbrojiti. To jest, nećete moći instalirati nekoliko skupova gumba ili ikona u isto vrijeme.</p> <p>"VBScript lekcija br. 16: "Funkcija MsgBox i InputBox "file_1.vbs"************************************ * ********************* MsgBox "Hello", 5+16, "Title" MsgBox "Hello", vbRetryCancel+16, "Title" MsgBox "Hello " , vbRetryCancel+524288, "Naslov" MsgBox "Hello", vbAbortRetryIgnore + vbInformation + vbDefaultButton2 + vbSystemModal + 524288, "Title" MsgBox "Hello", 528706, "Title"</p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"><p>"******************************************************** </p><p>"VBScript lekcija #16:</p><p>"MsgBox i funkcija InputBox</p><p>"datoteka_1.vbs</p><p>"******************************************************** </p><p>MsgBox "Zdravo", 5 + 16, "Naslov"</p><p>MsgBox "Hello" , vbRetryCancel + 16 , "Title"</p><p>MsgBox "Hello" , vbRetryCancel + 524288 , "Title"</p><p>MsgBox "Hello" , vbAbortRetryIgnore + vbInformation + vbDefaultButton2 + vbSystemModal + 524288 , "Title"</p><p>MsgBox "Zdravo", 528706, "Naslov"</p> </td> </tr></table><p>Osim toga, funkcija MsgBox može vratiti rezultat klikova na gumb. Može se dodijeliti varijabli i na taj način odrediti pritisnutu tipku.</p> <h3>Vrati rezultat pritisnutih tipki (konstante):</h3> <ul><li><b>vbOK</b>— Vrijednost 1. Gumb U redu.</li> <li><b>vbOdustani</b>— Vrijednost 2. Gumb Odustani.</li> <li><b>vbPrekini</b>— Vrijednost 3. Gumb za prekid.</li> <li><b>vbPokušaj ponovo</b>— Vrijednost 4. Gumb za ponavljanje.</li> <li><b>vbIgnoriraj</b>— Vrijednost 5. Gumb Preskoči.</li> <li><b>vbDa</b>— Vrijednost 6. Gumb Da.</li> <li><b>vbbr</b>— Vrijednost 7. Nema gumba.</li> </ul><p>"************************************************ ******* "VBScript lekcija br. 16: "MsgBox i funkcija InputBox "file_2.vbs"**************************** *********** ***************************** Dim Knopka Knopka = MsgBox("Pritisnite bilo koji gumb ",2,"Naslov") If Knopka = 3 Then MsgBox "Pritisnuli ste gumb - Prekini" ElseIf Button = 4 Then MsgBox "Pritisnuli ste gumb - Ponovi" Else MsgBox "Pritisnuli ste gumb - Preskoči" End If</p> <p>"************************************************ ******* "VBScript lekcija br. 16: "MsgBox i funkcija InputBox "file_4.vbs"**************************** *********** ***************************** Dim Dict, AboutBomb Set Dict = CreateObject(" Scripting.Dictionary") Dict.CompareMode = 1 Dict .Dodaj "Žuto", "Bomba je eksplodirala!" Dict.Dodaj "Crveno", "Deaktivirali ste bombu!" Dict.Dodaj "Plavo", "Bomba je eksplodirala!" Dict.Add "Green", "Bomba je eksplodirala!" AboutBomb = InputBox("Otkrivena bomba!!! Koju žicu trebate presjeći: žutu, crvenu, plavu ili zelenu??","Otkrivena bomba!!! ","Ovdje unesite boju žice...") If Dict.Exists(AboutBomb) then MsgBox Dict.Item(AboutBomb) else MsgBox "Vid vam je loš! Takva žica ne postoji! Bomba je eksplodirala!!!" end if</p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"><p>"******************************************************** </p></td></tr></table> <!-- SAPE RTB JS --> <script async="async" src="https://cdn-rtb.sape.ru/teasers/js/291/2/92291.js" type="text/javascript"> </script> <!-- SAPE RTB END --><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> </article> <div class="single-share"> <div class="row align-middle"> <div class="columns small-12 medium-expand"> <div class="single-share__title">reci prijateljima</div> </div> </div> <div class="single-share-links"> <div class="row"> <div class="columns small-6 medium-3"> <a href="#" onClick="window.open('https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2F128gb.ru%2Fvbs-komandy-vbscript-osnovy-vbscript-metody-i-svoistva-klassa-shell.html', 'sharer', 'toolbar=0,status=0, width=700, height=400'); return false" title="" class="single-share-links-item single-share-links-item--fb"> <div class="row"> <div class="columns"><i class="fa fa-facebook-official single-share-links-item__icon"></i> </div> <div class="columns text-right js-fb-sharer"><span class="single-share-links-item__text"></span> </div> </div> </a> </div> <div class="columns small-6 medium-3"> <a href="#" onClick="window.open('http://vk.com/share.php?url=https%3A%2F%2F128gb.ru%2Fvbs-komandy-vbscript-osnovy-vbscript-metody-i-svoistva-klassa-shell.html', 'sharer', 'toolbar=0,status=0, width=700, height=400'); return false" title="" class="single-share-links-item single-share-links-item--vk"> <div class="row"> <div class="columns"><i class="fa fa-vk single-share-links-item__icon"></i> </div> <div class="columns text-right js-vk-sharer"><span class="single-share-links-item__text"></span> </div> </div> </a> </div> <div class="columns small-6 medium-3"> <a href="#" onClick="window.open('http://twitter.com/share?url=https%3A%2F%2F128gb.ru%2Fvbs-komandy-vbscript-osnovy-vbscript-metody-i-svoistva-klassa-shell.html', 'sharer', 'toolbar=0,status=0, width=700, height=400'); return false" title="" class="single-share-links-item single-share-links-item--tw"> <div class="row"> <div class="columns"><i class="fa fa-twitter single-share-links-item__icon"></i> </div> <div id="twitter_sharer" class="columns text-right">Cvrkut <span class="single-share-links-item__text"></span> </div> </div> </a> </div> <div class="columns small-6 medium-3"> <a href="#" onClick="window.open('https://connect.ok.ru/dk?st.cmd=WidgetSharePreview&st.shareUrl=https%3A%2F%2F128gb.ru%2Fvbs-komandy-vbscript-osnovy-vbscript-metody-i-svoistva-klassa-shell.html/&utm_source=share2', 'sharer', 'toolbar=0,status=0, width=700, height=400'); return false" title="" class="single-share-links-item single-share-links-item--ok"> <div class="row"> <div class="columns"><i class="fa fa-odnoklassniki single-share-links-item__icon"></i> </div> <div class="columns text-right js-ok-sharer"><span class="single-share-links-item__text"></span> </div> </div> </a> </div> </div> </div> </div> <div class="banner-place" data-place="article_under_h1" style="width: 100%;"></div> <div class="prev-next-articles"> <div class="prev-next-articles__item prev-next-articles__item--left"> <i class="fa fa-chevron-left"></i><span>Samsung igra...</span> <a href="https://128gb.ru/hr/kak-ustanovit-yandeks-launcher-po-umolchaniyu-ischez-rabochii-stol-android-ili-ne.html" rel="prev">Android radna površina je nestala ili pokretač ne radi!</a> </div> <div class="prev-next-articles__item prev-next-articles__item--right"> <i class="fa fa-chevron-right"></i><span>Sljedeći članak</span> <a href="https://128gb.ru/hr/sony-pc-companion-ne-rabotaet-xperia-companion-novoe-prilozhenie-na-windows-pc-dlya.html" rel="next">Xperia Companion - nova aplikacija na Windows računalu za ažuriranje i vraćanje Xperia</a> </div> </div> <div class="banner-place" data-place="article_above_similar_articles" style="width: 100%;"></div> <div class="banner-place" data-place="article_above_similar_articles_2" style="width: 100%;"></div> <div class="banner-place" data-place="article_under_social" style="width: 100%;"></div> <div class="banner-place" data-place="fixed_bottom_right" style="width: 100%;"></div> <div class="read-more"> <div class="read-more__title text-center">Pročitajte također</div> <div class="read-more__row"> <div class="row"> <div class="columns small-12 medium-6"> <div class="article-block-small row full noGutter"> <div class="columns shrink"> <div class="article-block-small__img"> <a href="https://128gb.ru/hr/kakoi-audiopleer-luchshe-dlya-kompyutera-luchshie-muzykalnye-pleery-na.html"> <img width="130" height="85" src="/uploads/73abc6de7b92bfdc0f232fce200559a6.jpg" alt="Najbolji glazbeni playeri za Android" / loading=lazy loading=lazy> </a> </div> </div> <div class="columns"> <a class="article-block-small__link" href="https://128gb.ru/hr/kakoi-audiopleer-luchshe-dlya-kompyutera-luchshie-muzykalnye-pleery-na.html">Najbolji glazbeni playeri za Android</a> <div class="article-block-small__author"> <i class="fa fa-user"></i><span>2024-03-13 00:03:49</span> </div> </div> </div> </div> <div class="columns small-12 medium-6"> <div class="article-block-small row full noGutter"> <div class="columns shrink"> <div class="article-block-small__img"> <a href="https://128gb.ru/hr/chto-takoe-haby-na-vnedorozhnike-chto-takoe-hab-svitch-i-router-vyglyadit.html"> <img width="130" height="85" src="/uploads/7a29f3c07f20966e89e1b3a8b5bde139.jpg" alt="Što je hub, switch i router?" / loading=lazy loading=lazy> </a> </div> </div> <div class="columns"> <a class="article-block-small__link" href="https://128gb.ru/hr/chto-takoe-haby-na-vnedorozhnike-chto-takoe-hab-svitch-i-router-vyglyadit.html">Što je hub, switch i router?</a> <div class="article-block-small__author"> <i class="fa fa-user"></i><span>2024-03-12 00:04:38</span> </div> </div> </div> </div> </div> </div> <div class="read-more__row"> <div class="row"> <div class="columns small-12 medium-6"> <div class="article-block-small row full noGutter"> <div class="columns shrink"> <div class="article-block-small__img"> <a href="https://128gb.ru/hr/json-rasshifrovka-abbreviatury-osnovy-raboty-s-json-chto-takoe-json.html"> <img width="130" height="85" src="/uploads/a25ab8fadd32446d66f87b7ab9f34d96.jpg" alt="Json dekodiranje kratica" / loading=lazy loading=lazy> </a> </div> </div> <div class="columns"> <a class="article-block-small__link" href="https://128gb.ru/hr/json-rasshifrovka-abbreviatury-osnovy-raboty-s-json-chto-takoe-json.html">Json dekodiranje kratica</a> <div class="article-block-small__author"> <i class="fa fa-user"></i><span>2024-03-11 00:04:21</span> </div> </div> </div> </div> <div class="columns small-12 medium-6"> <div class="article-block-small row full noGutter"> <div class="columns shrink"> <div class="article-block-small__img"> <a href="https://128gb.ru/hr/galereya-izobrazheniya-na-jquery-galereya-izobrazhenii-na-jquery-s.html"> <img width="130" height="85" src="/uploads/e2061ca22c6de4fb892f07c2584a9328.jpg" alt="jQuery galerija slika sa zanimljivim efektom" / loading=lazy loading=lazy> </a> </div> </div> <div class="columns"> <a class="article-block-small__link" href="https://128gb.ru/hr/galereya-izobrazheniya-na-jquery-galereya-izobrazhenii-na-jquery-s.html">jQuery galerija slika sa zanimljivim efektom</a> <div class="article-block-small__author"> <i class="fa fa-user"></i><span>2024-03-09 00:04:15</span> </div> </div> </div> </div> </div> </div> <div class="read-more__row"> <div class="row"> </div> </div> <div class="read-more__row"> <div class="row"> </div> </div> </div> </div> </div> <div class="columns small-12 medium-4 show-for-medium"> <aside class="sidebar"> <div class="experts-list"> <b><div class="experts-list__title">Najnovije publikacije</div></b><br> <div class="experts-list__item"> <div class="expert row align-middle full noGutter"> <div class="columns small-3 medium-3"> <div class="expert__img"> <img src="/uploads/feff38bed77dc79090027685f0fd5f35.jpg" width="65" height="65" loading=lazy loading=lazy> </div> </div> <div class="columns small-9 medium-9"> <a href="https://128gb.ru/hr/otobrazhenie-razmera-papok-v-windows-7-kak-uznat-razmer-papok-na.html" title="Kako saznati veličinu mapa na disku koristeći PowerShell" class="expert__name">Kako saznati veličinu mapa na disku koristeći PowerShell</a> <div class="expert__specialty"> <a class="right-cat-link" href="https://128gb.ru/hr/category/solving-problems/">Rješavanje problema</a> </div> <div class="row full noGutter"> <div class="columns shrink"> <div class="expert__rate"> </div> </div> <div class="columns"> <div class="expert__rate"> </div> </div> </div> </div> </div> </div> <div class="experts-list__item"> <div class="expert row align-middle full noGutter"> <div class="columns small-3 medium-3"> <div class="expert__img"> <img src="/uploads/4817d653c3d16ee7667f7adb92a72cda.jpg" width="65" height="65" loading=lazy loading=lazy> </div> </div> <div class="columns small-9 medium-9"> <a href="https://128gb.ru/hr/udalenie-vtoroi-operacionnoi-sistemy-s-kompyutera-ubiraem-vtoruyu-os-windows-iz.html" title="Uklanjanje drugog Windows OS-a s popisa za preuzimanje Kako ukloniti drugi Windows 7 s računala" class="expert__name">Uklanjanje drugog Windows OS-a s popisa za preuzimanje Kako ukloniti drugi Windows 7 s računala</a> <div class="expert__specialty"> <a class="right-cat-link" href="https://128gb.ru/hr/category/protection/">Zaštita</a> </div> <div class="row full noGutter"> <div class="columns shrink"> <div class="expert__rate"> </div> </div> <div class="columns"> <div class="expert__rate"> </div> </div> </div> </div> </div> </div> <div class="experts-list__item"> <div class="expert row align-middle full noGutter"> <div class="columns small-3 medium-3"> <div class="expert__img"> <img src="/uploads/32316589abc8decf14a4a67462b55e04.jpg" width="65" height="65" loading=lazy loading=lazy> </div> </div> <div class="columns small-9 medium-9"> <a href="https://128gb.ru/hr/kak-vklyuchit-vai-fai-na-noutbuke-kak-vklyuchit-vai-fai-na.html" title="Kako uključiti Wi-Fi na prijenosnom računalu Kako postaviti usmjerivač na prijenosnom računalu sa sustavom Windows 8" class="expert__name">Kako uključiti Wi-Fi na prijenosnom računalu Kako postaviti usmjerivač na prijenosnom računalu sa sustavom Windows 8</a> <div class="expert__specialty"> <a class="right-cat-link" href="https://128gb.ru/hr/category/peripherals/">Periferija</a> </div> <div class="row full noGutter"> <div class="columns shrink"> <div class="expert__rate"> </div> </div> <div class="columns"> <div class="expert__rate"> </div> </div> </div> </div> </div> </div> <div class="experts-list__item"> <div class="expert row align-middle full noGutter"> <div class="columns small-3 medium-3"> <div class="expert__img"> <img src="/uploads/8432a7bfcdb706d1a86b782c05f75e83.jpg" width="65" height="65" loading=lazy loading=lazy> </div> </div> <div class="columns small-9 medium-9"> <a href="https://128gb.ru/hr/virus-zashchitil-fleshku-ot-zapisi-chto-delat-kak-snyat-zashchitu-s-fleshki-ot.html" title="Kako ukloniti zaštitu od pisanja s flash pogona" class="expert__name">Kako ukloniti zaštitu od pisanja s flash pogona</a> <div class="expert__specialty"> <a class="right-cat-link" href="https://128gb.ru/hr/category/boot-disk/">Disk za pokretanje</a> </div> <div class="row full noGutter"> <div class="columns shrink"> <div class="expert__rate"> </div> </div> <div class="columns"> <div class="expert__rate"> </div> </div> </div> </div> </div> </div> <div class="experts-list__item"> <div class="expert row align-middle full noGutter"> <div class="columns small-3 medium-3"> <div class="expert__img"> <img src="/uploads/e0d1cf337660c5106e756570c9b62ac3.jpg" width="65" height="65" loading=lazy loading=lazy> </div> </div> <div class="columns small-9 medium-9"> <a href="https://128gb.ru/hr/programmnyi-kompleks-poligon-tehnicheskii-plan-poligon-pro-tehplan.html" title="Polygon Pro: Tehnički plan građevine Koordinate odabranih objekata iz MapInfo" class="expert__name">Polygon Pro: Tehnički plan građevine Koordinate odabranih objekata iz MapInfo</a> <div class="expert__specialty"> <a class="right-cat-link" href="https://128gb.ru/hr/category/the-choice-of-operating-system/">Odabir operativnog sustava</a> </div> <div class="row full noGutter"> <div class="columns shrink"> <div class="expert__rate"> </div> </div> <div class="columns"> <div class="expert__rate"> </div> </div> </div> </div> </div> </div> <div class="experts-list__item"> <div class="expert row align-middle full noGutter"> <div class="columns small-3 medium-3"> <div class="expert__img"> <img src="/uploads/53d98bc9af6ce255f05b4ec31952bfdf.jpg" width="65" height="65" loading=lazy loading=lazy> </div> </div> <div class="columns small-9 medium-9"> <a href="https://128gb.ru/hr/testy-gtx-280-polzovatelyami-posle-pokupki-kompyuternyi-resurs-u-sm-osnovnye.html" title="Računalni resurs U SM" class="expert__name">Računalni resurs U SM</a> <div class="expert__specialty"> <a class="right-cat-link" href="https://128gb.ru/hr/category/useful-tips/">Korisni savjeti</a> </div> <div class="row full noGutter"> <div class="columns shrink"> <div class="expert__rate"> </div> </div> <div class="columns"> <div class="expert__rate"> </div> </div> </div> </div> </div> </div> <div class="experts-list__item"> <div class="expert row align-middle full noGutter"> <div class="columns small-3 medium-3"> <div class="expert__img"> <img src="/uploads/e3be64a997d74ba9a48f5b0195e074e5.jpg" width="65" height="65" loading=lazy loading=lazy> </div> </div> <div class="columns small-9 medium-9"> <a href="https://128gb.ru/hr/udalenie-uchetnoi-zapisi-polzovatelya-windows-7-poluchenie-administratorskih-prav.html" title="Dobivanje administratorskih prava" class="expert__name">Dobivanje administratorskih prava</a> <div class="expert__specialty"> <a class="right-cat-link" href="https://128gb.ru/hr/category/boot-disk/">Disk za pokretanje</a> </div> <div class="row full noGutter"> <div class="columns shrink"> <div class="expert__rate"> </div> </div> <div class="columns"> <div class="expert__rate"> </div> </div> </div> </div> </div> </div> <div class="experts-list__item"> <div class="expert row align-middle full noGutter"> <div class="columns small-3 medium-3"> <div class="expert__img"> <img src="/uploads/56fcf10656e3593988adfef2c6a300fd.jpg" width="65" height="65" loading=lazy loading=lazy> </div> </div> <div class="columns small-9 medium-9"> <a href="https://128gb.ru/hr/telefon-nokia-lyumiya-k-zavodskim-nastroikam-uchimsya-delat-sbros-nastroek-na.html" title="Učenje kako resetirati postavke na"нокиа люмия"" class="expert__name">Saznajte kako resetirati postavke na Nokia Lumiji</a> <div class="expert__specialty"> <a class="right-cat-link" href="https://128gb.ru/hr/category/installing-multiple-os/">Instalacija više OS-a</a> </div> <div class="row full noGutter"> <div class="columns shrink"> <div class="expert__rate"> </div> </div> <div class="columns"> <div class="expert__rate"> </div> </div> </div> </div> </div> </div> <div class="experts-list__item"> <div class="expert row align-middle full noGutter"> <div class="columns small-3 medium-3"> <div class="expert__img"> <img src="/uploads/9276f89bd5be32238287b52fc363a64e.jpg" width="65" height="65" loading=lazy loading=lazy> </div> </div> <div class="columns small-9 medium-9"> <a href="https://128gb.ru/hr/kakim-antivirusom-luchshe-proskanirovat-fleshku-kak-proverit-na-virusy-fleshku.html" title="Kako provjeriti flash disk na viruse?" class="expert__name">Kako provjeriti flash disk na viruse?</a> <div class="expert__specialty"> <a class="right-cat-link" href="https://128gb.ru/hr/category/peripherals/">Periferija</a> </div> <div class="row full noGutter"> <div class="columns shrink"> <div class="expert__rate"> </div> </div> <div class="columns"> <div class="expert__rate"> </div> </div> </div> </div> </div> </div> <div class="experts-list__item"> <div class="expert row align-middle full noGutter"> <div class="columns small-3 medium-3"> <div class="expert__img"> <img src="/uploads/f7802de41a637a687b0e9e72b5f2a052.jpg" width="65" height="65" loading=lazy loading=lazy> </div> </div> <div class="columns small-9 medium-9"> <a href="https://128gb.ru/hr/otkrytie-keisov-v-vorld-of-tank.html" title="Otvaranje kofera u World of Tank" class="expert__name">Otvaranje kofera u World of Tank</a> <div class="expert__specialty"> <a class="right-cat-link" href="https://128gb.ru/hr/category/installation-and-configuration/">Instalacija i konfiguracija</a> </div> <div class="row full noGutter"> <div class="columns shrink"> <div class="expert__rate"> </div> </div> <div class="columns"> <div class="expert__rate"> </div> </div> </div> </div> </div> </div> </div> <div> <div id="komojy1" style="height:500px;width:300px;" align="center"></div> </div> </aside> </div> </div> </main> </div> </div> </div> <footer class="footer"> <div class="footer-menu"> <a href="https://128gb.ru/hr/feedback.html" title="" class="footer-menu__item">Kontakti</a> <a href="" title="" class="footer-menu__item">o projektu</a> <a href="https://128gb.ru/hr/feedback.html" title="" class="footer-menu__item">Oglašavanje</a> </div> <div class="footer-bottom"> <div class="footer-bottom__wrapper"> <div class="footer-bottom__block"> <div class="footer__logo"> </div> <div class="footer__copyright" style="max-width:500px;">© 2024. Računalna pomoć <br> <small></small> </div> </div> <div class="footer-submenu"> <div class="footer-submenu__column"> <a class="footer-submenu__item" data-key="aHR0cDovL3NvdmV0cy5uZXQvYWJvdXQ=" data-type="href" href="https://128gb.ru/hr/category/useful-tips/">Korisni savjeti</a> </div> <div class="footer-submenu__column"> <a class="footer-submenu__item" data-key="aHR0cDovL3NvdmV0cy5uZXQvYWJvdXQ=" data-type="href" href="https://128gb.ru/hr/category/solving-problems/">Rješavanje problema</a> </div> <div class="footer-submenu__column"> <a class="footer-submenu__item" data-key="aHR0cDovL3NvdmV0cy5uZXQvYWJvdXQ=" data-type="href" href="https://128gb.ru/hr/category/iron/">Željezo</a> </div> <div class="footer-submenu__column"> </div> </div> <div class="footer-social"> </div> </div> </div> </footer> <script type="text/javascript" src="//vk.com/js/api/openapi.js?124"></script> <script> var BANNERS = { types: { code: 1, consultant: 6, modal: 9, offer: 7 } } </script> <script type="text/javascript" src="https://128gb.ru/wp-content/themes/womensovet/assets/js/app-20170207142519.js"> </script> <script type="text/javascript"> /*<![CDATA[*/ window.hashName = window.location.hash; if (window.hashName) { $(window).load(function () { $('html, body').animate({ scrollTop: $(window.hashName).offset().top} , 2000); return false; } ); } jQuery(function($) { $(document).foundation(); APP.init(); getVkSharedCount(); getFaceBookShareCount(); getOKShareCount(); } ); /*]]>*/ </script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js?ver=4.8.3'></script> <div class="li-stat"> </div> <!-- SAPE RTB JS --> <script async="async" src="https://cdn-rtb.sape.ru/teasers/js/291/2/92291.js" type="text/javascript"> </script> <!-- SAPE RTB END --><br> <br> </body> </html>