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 – –
●
Obsahuje dva programovací jazyky – –
●
Skriptovací nástroj pro Windows Umožňuje automatizaci různých činností 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é – –
Řetězce –
+ nebo & spojování – ”Ahoj” & ”světe”
Logické operátory –
+, -, *,/, ^ (mocnina) \ (celočíselné dělení), Mod (zbytek po dělení)
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
Řídící struktury 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
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
Tlačítka
0
OK
1
OK a Storno
2
Přerušit, Opakovat, Ignorovat
3
Ano, Ne, Storno
4
Ano, Ne
5
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
Stisklé tlačítko
1
OK
2
Storno
3
Přerušit
4
Opakovat
5
Ignorovat
6
Ano
7
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
WSH a registry Objekt WshShell Metody RegRead, RegWrite, RegDel Zkratky kořenových klíčů
HKEY_CURRENT_USER
HKCU
HKEY_LOCAL_MACHINE
HKLM
HKEY_CLASSES_ROOT
HKCR
HKEY_USERS
HKEY_USERS
HKEY_CURRENT_CONFIG
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