WSH Windows Script Hosting OSY 2 Přednáška číslo 2 opravená verze z 15.10.2007
Co je skript? Skriptování nástroj pro správu systému a automatizaci úloh Umožňuje psát skripty jednoduché interpretované programové konstrukce obsahující posloupnosti příkazů systému
Druhy skriptovacích jazyků Windows WSH UNIX součást bashe Apple AppleScript Platformově nezávislé Perl, Python
Co je WSH? WSH Windows Script Host Skriptovací nástroj pro Windows Umožňuje automatizaci různých činností Obsahuje dva programovací jazyky VBScript podmnožina Visual Basicu Jscript podmnožina JavaScriptu Od Windows98 a Windows NT 4.0
Omezení Tyto jazyky neobsahují všechny funkce jako Visual Basic nebo JavaScript Nelze je zkompilovat do EXE souborů Liší se objektový přístup Neobsahují žádné své uživatelské rozhraní
Základy práce s WSH Je nutné povolit spouštění skriptů Pro editaci skriptů stačí libovolný textový editor, třeba poznámkový blok Doporučuje se používat koncovky *.js a *.vbs Pozor na dvojí přípony a jejich zobrazení prekvapeni.doc.vbs se zobrazí jako prekvapeni.doc.
Ukázka Ahoj světe ve VBScriptu WScript.Echo "Ahoj světe v VBScriptu" ahoj.vbs Ahoj světe v Jscriptu WScript.Echo ("Ahoj světe v JScriptu"); ahoj.js
JScript
Jscript Jedná se o specifikaci firmy Microsoft Vychází z jazyka Netscape JavaScript Přidány funkce MS Windows a schopnost volat objekty COM Jedná se o interpretovaný jazyk Podpora objektů Další informace
Struktura programu v Jscriptu Podobná syntaxe jako C, C++, Perl, Python, JavaScript Rozlišují se malá a velká písmena Příkazy se ukončují středníkem Komentáře se píší // takto
Struktura programu v Jscriptu Proměnné var a; // proměnná platná pouze v této funkci var b=10; // s nastavenou hodnotou Cena=500; // globální proměnná Názvy proměnné První znak musí být písmeno, _, a $. Ne číslice! Číslice mohou být jako další znaky Rozlišuje se velikost písmen Délka názvu neomezená
Struktura programu v Jscriptu Escape sekvence v řetězcích (jako v C) \n nový řádek \f konec stránky \t tabulátor \ uvozovky \\ - zpětné lomítko
Struktura programu v Jscriptu Operátory = přiřazení +=, -= (jako u C) Logické operátory (jako u C) ==,!=, >=,<=,<,> if (pocet!= 10) pocet++;
Struktura programu v Jscriptu Aritmetické operátory +, -, *, /, % (celočíselné dělení a++, a--, ++a, --a Příklad: a=1; c=a++; d=--a; a*=c;
Struktura programu v Jscriptu Logické operátory && - And (a), logický součin - Or (nebo), logický součet! Not (negace)
Struktura programu v Jscriptu Řídící struktury if (podmínka) { příkazy 1 } else { příkazy 2 }
Struktura programu v Jscriptu Smyčka for for (inicializace; podmínka; příkaz zvýšení) { příkazy } Příklad (faktoriál n) faktorial = 1; n=20; for (i=1; i<=n; i++) {faktorial*=i}; WScript.Echo (faktorial);
Struktura programu v Jscriptu Další smyčky while (podmínka) { příkazy }; do { příkaz } while (podmínka);
Struktura programu v Jscriptu Příkaz switch (větvení) switch (X) { case 1: příkazy; case 5: příkazy; default: příkazy; }
Struktura programu v Jscriptu Příkaz break předčasné ukončení cyklu Příkaz continue skok na začátek podmínky
Příklady Vytvoření dialogového okna Iterace Dnešní datum
VBScript
Co je VBScript VBScript je podmnožinou jazyka Microsoft Visual Basic for Applications (VBA), který je součástí MS Office. Kdo programoval ve Visual Basicu nebo v Office, pak je to totéž
Syntaxe Jeden příkaz na řádek (možno více oddělených dvojtečkou, ale kvůli přehlednosti se to nedoporučuje) Velikost písmen v příkazech a proměnných není podstatná (na rozdíl od Jscriptu) Komentáře se uvozují znakem nebo příkazem REM Je-li nutné rozdělit příkaz na více řádek použije se na konci řádku symbol &_ (na řádku obsahujícím tento symbol nesmí být komentář)
Konstanty a proměnné Const DPH= 19 Zisk = 1000 Všechny proměnné jsou typu Variant (může být typu řetězec, datum, logická hodnota (True, False), celé číslo a číslo s pohyblivou řádovou čárkou). Pole se deklarují Dim hodnota(10) pole s jedenácti prvky o indexech 0 až 10 hodnota(0) = 1
Operátory Aritmetické +, -, *,/, ^ (mocnina) \ (celočíselné dělení), Mod (zbytek po dělení) Řetězce + nebo & spojování Ahoj & světe Logické operátory Not, And, Or Operátory porovnání <, >, =, <=, >=, <>
Řídící struktury If a<0 Then b = 10 If a=0 Then b = 1 c = 3 End If
If a = 1 Then b = 3 c = 4 ElseIf a = 2 Then b = 1 c = 2 ElseIf a = 3 Then b = 8 Else b = 2 End If Řídící struktury
Select Case a Case 1 a = 3 b = 1 Case 2 a = 4 Case Else a = 2 End Select Řídící struktury
Smyčky s podmínkou na začátku Do While a < 10 (dělej dokud je a menší než 10) a = a+1 Loop Do Until a >= 10 (dělej dokud není větší nebo rovno 10) a = a + 1 Loop
Smyčky s podmínkou na konci Do a = a + 1 Loop While a < 10 Do a = a + 1 Loop Until a>=10
Použití dialogových oken Pro výstup nějaké informace Pro interakci s uživatelem Pro vstup hodnot
Metoda Echo Wscript.Echo "Ahoj světe" Wscript.Echo "Velká matematika: 1 + 1 =" & 1+1 Konstanta vbcrlf zalomení řádku Wscript.Echo "Velká matematika: & vbcrlf &_ "1 + 1 =" & 1+1
Funkce MsgBox MsgBox výzva, tlačítka, titulek výzva text výzvy titulek záhlaví okna (nepovinné) tlačítka colitelný parametr definující typ dialogového okna a počet tlačítek MsgBox "Ahoj světe"
Tlačítka součet ikona + tlačítka ikona Konstanta 0 16 32 48 64 Ikona žádná stop otazník vykřičník informace
Tlačítka Konstanta 0 1 2 3 4 5 Tlačítka OK OK a Storno Přerušit, Opakovat, Ignorovat Ano, Ne, Storno Ano, Ne Opakovat, Storno
Ukázky MsgBox MsgBox "Windows zjistily, že se myš pohnula. Přejete si restarovat počítač" &_ " aby se změna projevila", 32 +4, "Dotaz MsgBox "Pusťte k tomu někoho inteligentního",48+0, "Varování MsgBox "Word byl skončen, přejete si hrát další hru?",48+5
Význam stisklého tlačítka Funkce MsgBox může mít návratovou hodnotu Hodnota 1 2 3 4 5 6 7 Stisklé tlačítko OK Storno Přerušit Opakovat Ignorovat Ano Ne
Vstupní okno promenna = InputBox(výzva,[titulek],[výchozí hodnota]) Příklad a = InputBox(" Zadej hodnotu a ", " Dotaz na a ", 23) Wscript.Echo a MsgBox a
Objekt WshShell WSH a registry Metody RegRead, RegWrite, RegDel Zkratky kořenových klíčů HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_CLASSES_ROOT HKEY_USERS HKEY_CURRENT_CONFIG HKCU HKLM HKCR HKEY_USERS HKEY_CURRENT_CONFIG
Příklad Jscript var WshShell = Wscript.CreateObject( Wscript.Shell ); WshShell.RegWrite( HKCU\\Software\\MyCoolSoftware\\,1); WshShell.RegWrite( HKCU\\Software\\MyCoolSoftware\\MySuperProgra m, Toto je test ); Wscript.Echo(WshShell.RegRead ( HKCU\\Software\\MyCoolSoftware\\MySuperProgram )); WshShell.RegDelete( HKCU\\Software\\MyCoolSoftware\\MySuperProgr am ); WshShell.RegDelete( HKCU\\Software\\MyCoolSoftware\\ );
Příklad VBScript Kod pro povoleni nebo zakazani zmeny v nabidce Start Set WSHShell = CreateObject( Wscript.Shell ); RegKey= HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ NoChangeStartMenu = WSHShell.Regread(regkey & NoChangeStartMenu ); If NoChangeStartenu = 1 Then Zmeny jsou zakazany Result = MsgBox( Nabidka Start je zamcena, vvnewline & Chcete ji odemknout,36) If Result = 6 Then Zvoleno ano WSHShell.RegWrite regkey & NoChangeStartMenu,0 End If Else Nabidka start muze byt zmenena Result = MsgBox( Start lze zmenit. &vbnewline& Chcete zakazat zmeny, 36) If Result = 6 Then klepnuto na ano WSHShell.RegWrite regkey& NoChangeStartMenu,1 End If End If
Konec Děkuji za pozornost