Udělejte si vlastní Windows!

1. 3. 2002

Sdílet

Ještě než začnete číst, připomeneme vám jedno přísloví Každý začátek je těžký.Abyste mohli všechny informace, jež vám přinášíme v tomto článku, nějakým smysluplným způ...

Ještě než začnete číst, připomeneme vám jedno přísloví Každý začátek je těžký.
Abyste mohli všechny informace, jež vám přinášíme v tomto článku, nějakým

smysluplným způsobem využít, musíte si ve svém „plánu dne“ vyhradit nějaký čas.

Neboť jestliže si chcete Windows vylepšit o svoje nápady, musíte se důvěrně

seznámit s programem Windows Scripting Host. Tato aplikace je interpreterem pro

skripty Visual Basicu a Java skripty.



Pokud máte na svém počítači nainstalována Windows 98/ME nebo Windows 95 a NT s

programem Internet Explorer 5, máte již Windows Scripting Host nainstalován na

vašem pevném disku. Používáte-li pouze Windows 95/NT, můžete si Windows

Scripting Host snadno nainstalovat. Naleznete jej ve verzi 5.6 , případně na

internetu na adrese

http://msdn.microsoft.com/dow­nloads/default.asp?url=/dow­nloads/topic.asp?url=/ms

dn-files/028/001/175/topic.xml (SCR56CS.EXE, 728 KB pro Windows 98, ME a NT4;

SCRIPTCS.EXE, 732 KB pro Windows 2000). Prostřednictvím tohoto interpreteru se

dá v porovnání s velmi omezenými možnostmi skriptování pomocí dávkových

souborů, které Windows podědila po operačním systému MS-DOS pracovat na daleko

vyšší úrovni. To, že programovací jazyky, jejichž zástupcem je například i VB

skript, se dají velmi snadno naučit, patří mezi oblíbené pohádky

profesionálních programátorů. Ti se totiž po takto slibném úvodu okamžitě

vytasí s 500stránkovým „úvodem“ do VB skriptu.



Windows Scripting Host je aplikace poměrně málo přívětivá a podle našeho názoru

neumožňuje začátečníkovi moc radosti z vlastní práce. Proto vám chceme v našem

článku a samozřejmě i nabídnout krátký kurs tohoto jazyka, který vám umožní

překonat jeho největší úskalí. K tomu účelu vám výborně poslouží řada cvičných

skriptů, na nichž budeme demonstrovat základy VB skriptu. Rovněž se vám

pokusíme dát několik podnětů (ve formě hotových utilit), jež by vás měly

inspirovat pro tvorbu vašich vlastních skriptů.



Náš článek se skládá ze dvou částí. Každá stránka bude rovněž rozdělena na dvě

části. Ve spodní části naleznete krátký úvod do programu Windows Scripting

Host, a obzvláště do VB skriptu se základními pojmy z oblasti programování. V

této části popsané miniskripty poběží na každém počítači splňujícím systémové

požadavky a všechny se nacházejí na našem CD. Nejdůležitější pojmy vysvětlíme

hned na začátku.



V horní části následujících stránek se budeme zabývat nejběžnějšími problémy ve

Windows, jež jsme vyřešili právě použitím aplikace Windows Scripting Host. Tyto

občas velmi rozsáhlé skripty naleznete rovněž . Mnohé z nich si ovšem budete

muset před použitím ještě určitým způsobem sami upravit. V textu článku se

přesně dozvíte, o které skripty se jedná.





V tomto příspěvku naleznete řadu tipů a návodů, jež v mnoha případech doprovází

specifické programové vybavení. Jak napovídá ikona, doprovodné programy či

skripty jsou umístěny na přiloženém CD-ROMu. Aby bylo hledání usnadněno, jsou

všechny soubory, náležející k tomuto článku, uloženy na CD v rubrice

Software/Vyzkoušejte si, jako položka Tip&Trik. Zde naleznete jediný soubor s

příponou exe jedná se o samorozbalovací archiv, po jehož spuštění a zadání

cílové složky na pevném disku dojde k vybalení kompletního doprovodného

materiálu. (Na stejném místě bylo možné doprovodný software nalézt rovněž v

minulých číslech používáme tento způsob již přes půl roku a bude tomu tak i v

budoucnu.)





1. Zjednodušené volání dialogových oken a funkcí



Otevírání dialogových oken Exploreru pomocí skriptů



PROBLÉM: Některá dialogová okna nebo funkce obsluhované programem Explorer

můžete vyvolat pomocí klávesových zkratek. Tak například stiskem klávesy <f1>

vyvoláte nápovědu, klávesa <f3> zobrazí dialogové okno pro vyhledávání složek a

souborů. Pro mnohé další, často používané funkce ale tato velmi praktická

možnost chybí.



ŘEŠENÍ: Windows Scripting Host také dokáže dobře spouštět všechny funkce

programu Explorer. Navíc se samy skripty dají velmi snadno aktivovat právě

stiskem námi nadefinované klávesové zkratky. Nezbytným předpokladem ovšem je,

aby se v daném skriptu nacházel řádek



Set Shell = CreateObject („Shell.Application“)



Ten umožní přístup na externí objekty programového rozhraní (také nazývaného

Shell) a umožní používat metody těchto objektů. Několik příkladů: Když pod výše

zapsaný příkaz přidáme na druhý řádek výraz



Shell.SetTime



spustí se dialogové okno Datum a čas vlastnosti. Příkaz Shell.FindFiles vyvolá

dialog na vyhledávání souborů či složek a příkaz Shell. FindComputer vyvolá

dialogové okno na vyhledávání počítačů v síti. Obzvláště užitečný je i příkaz

Shell.ShutdownWindows, který umožňuje ukončit Windows, stejně jako příkaz

Shell.Suspend, jenž přepne počítač do úsporného režimu. Kromě dialogových oken

můžete využívat nejrůznější další funkce programu Explorer, například

uspořádání či minimalizování oken. Seznam všech možných příkazů programu

Explorer naleznete v části věnované programu Windows Scripting Host, a to v

tabulce s nadpisem Explorer: Přehled metod.



Nyní vám prozradíme, jak si pro vámi zvolenou funkci nadefinovat klávesovou

zkratku. Ukážeme to na příkladu jednoduchého skriptu obsahujícího tyto řádky:



Set Shell = CreateObject („Shell.Application“)

Shell.FileRun



Vůbec nezáleží na tom, kde takový skript vytvoříte a jak jej pojmenujete. Stačí

pouze soubor s tímto skriptem přetáhnout do libovolného podmenu nabídky Start.

Tím vytvoříte k tomuto skriptu jeho zástupce. Když nyní na zástupce skriptu

klepnete pravým tlačítkem myši a z kontextového menu zvolíte příkaz Vlastnosti,

můžete v poli Klávesová zkratka nadefinovat stejně znějící funkci. To uděláte

tak, že do políčka klepnete myší a stisknete vámi požadovanou klávesovou

zkratku, například <ctrl><f5> (nezapomeňte vyzkoušet, zdali vámi zadaná

kombinace již není obsazená). Po stisku klávesové zkratky se vám spustí skript,

jenž v našem případě vyvolá dialogové okno Spustit z nabídky Start.





Explorer: Přehled metod



BrowseForFolder – Vyhledávání složek

CascadeWindows – Seřazení otevřených oken do kaskády

ControlPanelItem („parametr“) – Zobrazení položky okna Ovládací panely

Explore („parametr“) – Otevření složky

FileRu – Vyvolání okna Spustit

FindComputer – Vyvolání okna Hledat počítač

FindFiles – Vyvolání okna Hledat soubory či složky

MinimizeAll – Minimalizace všech otevřených oken

NameSpace („parametr“) – Otevření systémové složky

Open („parametr“) – Otevření složky

RefreshMenu – Aktualizace

SetTime – Vyvolání okna Datum a čas-vlastnosti

ShutdownWindows – Ukončení Windows

Help – Vyvolání nápovědy

Suspend – Přepnutí počítače do úsporného režimu

TileHorizontally – Uspořádání oken na šířku

TileVertically – Uspořádání oken podélně

TrayProperties – Vyvolání okna Hlavní panel a nabídka Start vlastnosti

UndoMinimizeAll – Opak příkazu MinimizeAll







2. Kontextové menu



Příklad: Vysunutí médií z mechanik pomocí skriptu



PROBLÉM: Z CD mechanik, ZIP mechanik, případně JAZ mechanik můžete příslušný

disk vyndat buď stiskem tlačítka na odpovídající mechanice, nebo také přes

kontextové menu v programu Průzkumník či okno Tento počítač. Jelikož je

vysunutí příslušného média z mechaniky vyřešeno softwarově, mělo by to jít i

pomocí skriptu. V programu Windows Scripting Host se však žádná taková možnost

nenabízí.



ŘEŠENÍ: Program Windows Scripting Host skutečně nenabízí žádnou přímou možnost,

jak zpřístupnit funkce týkající se vyměnitelných médií v diskových mechanikách.

Lze se ovšem dostat ke kontextovým menu různých objektů programu Průzkumník. A

v nich se mezi mnoha dalšími příkazy vyskytuje též příkaz Vysunout. Náš skript

EJECT.VBS, který najdete , demonstruje způsob, jak se dostat na příkazy

obsažené v kontextových menu.



Nejprve se vytvoří objekt Shell, a to příkazem



Set Shell = CreateObject („Shell.Application“)



Přes tento objekt již můžeme přistupovat na příkazy programu Průzkumník.

Příkazem



Set Disk=ScanFolder(17, „(D:)“)



se zavolá univerzální funkce ScanFolder, která vrací pro určitý parametr metody

NameSpace odpovídající údaj. Hodnoty pro metodu NameSpace naleznete v tabulce s

názvem Kódy pro vyvolání některých systémových složek Windows. Skript EJECT.VBS

používá kód 17, jenž odpovídá složce Tento počítač.



Písmena pro označení disků (ve skriptu označená D: a E:) si musíte sami

nahradit písmeny, pod kterými máte diskové mechaniky na svém počítači. Pokud

vlastníte pouze jednu diskovou mechaniku, můžete řádky 4 a 5 vynechat. Ty totiž

slouží pouze k tomu, aby skript mohl pracovat (a vysunout disky) i z více

mechanik, pokud jsou k dispozici. Samotné vysunutí média způsobuje příkaz



Disk.invokeVerb(„&Vysunout“)



Znak & v příkazu Vysunout slouží k tomu, aby se písmeno V v kontextovém menu

podtrhlo a aby tak bylo možné přesně rozeznat příkaz pro vysunutí disku z

mechaniky. Tato úprava je nutná, bez ní by skript nefungoval.







Kódy pro vyvolání některých systémových složek Windows



0 – Pracovní plocha

1 – IE domovská stránka

2 – Programy

3 – Ovládací panely

4 – Tiskárny

5 – Dokumenty

6 – Oblíbené

7 – Po spuštění

8 – Recent

9 – SendTo

10 – Koš

11 – Nabídka Start

16 – Plocha

17 – Tento počítač

18 – Okolní počítače

20 – Fonts

21 – ShellNew

22 – Nabídka Start (All Users)

23 – Programy (All Users)

24 – Po spuštění (AllUsers)

25 – Pracovní plocha (All Users)

26 – Application Data

29 – Po spuštění

30 – Po spuštění

31 – Oblíbené (All Users)

32 – Temporary Internet Files

33 – Cookies







3. Příkazy alias



Praktický mini-Shell pro zvýšení přehlednosti



PROBLÉM: Nabídka Start je centrem pro zástupce všeho druhu. Ovšem se stovkami

položek je brzy tak nepřehledná, že hledání toho správného zástupce je

skutečnou zkouškou naší trpělivosti. Ve Windows sice existuje celá řada dalších

způsobů, jak spustit nějaký program či otevřít složku (pracovní plocha, panel

Snadné spuštění, kanály, složka Oblíbené, příkazový řádek MS-DOS atd.). Nakonec

ale stejně uživatel neví, co kde vytvořil a nezbývá mu nic jiného, než se na to

správné místo pracně proklepat mezi spoustou složek třeba prostřednictvím ikony

Tento počítač.



ŘEŠENÍ: Náš jednoduchý skript, který jsme pojmenovali ALIASSHELL.VBS, přiřazuje

těm nejdůležitějším prostředkům a nejčastěji používaným programům písmenné

zkratky. Po spuštění skriptu se objeví dialogové okno, které po vás vyžaduje

zadání zkratky. Skript tuto zkratku zpracuje a pomocí výběrového příkazu Select

Case k ní vyvolá odpovídající akci. Po spuštění skriptu zůstává dialogové okno

pro zadání zkratky na obrazovce tak dlouho, dokud nestisknete tlačítko Storno.

Skript samozřejmě naleznete .



Po zadání nesprávné zkratky se může nechat zobrazit seznam všech dostupných

zkratek. Náš skript k tomuto účelu prohledává sám sebe a vypisuje všechny

řádky, jež obsahují komentáře. Pokud o tuto funkci stojíte, nesmíte v daném

skriptu vytvářet žádné jiné komentáře než ty, jež se vztahují k vysvětlení

zkratek!



Upozornění: Když budete náš skript testovat a zalíbí se vám tak, že jej budete

chtít používat, musíte si v něm většinu zkratek a jim náležejících příkazů

upravit. Týká se to všech výrazů uvedených ve skriptu za příkazem Case, kromě

příkazu Case Else. Na vašem počítači budou fungovat pouze ty zkratky, u jejichž

příkazů není zadána žádná cesta (jako je například spuštění programu

REGEDIT.EXE nebo CALC.EXE).







4. Plánované spouštění programů



Organizace spouštění programů při startu Windows



PROBLÉM: Když chcete nějaký program spouštět pravidelně, je vám k dispozici

složka Po spuštění. Ovšem spouštění aplikací v této složce se nedá nijak

nastavit. Například jsou dny, kdy svůj počítač spouštíte třeba desetkrát za

den, další tři dny vám běží nepřetržitě, než jej spustíte znovu. Programy ve

složce Po spuštění se spustí vždy pouze po startu počítače, a tuto skutečnost

můžete změnit až prostřednictvím našeho skriptu.



ŘEŠENÍ: Na příkladu našeho skriptu s názvem WINSTART.VBS (najdete jej ) vám

ukážeme, jak se dá automatické spouštění programů po startu počítače zdokonalit.



K tomu účelu jsme si vymysleli modelovou situaci, pokud možno blízkou běžné

praxi, a vypracovali její řešení. Princip, na němž je založeno, se dá bez

problémů převést na prakticky jakoukoliv podobnou situaci, jež se vyskytne u

vás.



Pro zprovoznění skriptu jej stačí zkopírovat do složky Po spuštění, případně

tam umístit jeho zástupce. V našem modelovém příkladu jsme zvolili případ čtyř

aplikací program pro práci s elektronickou poštou, utilitu pro plánování úkolů

a dva dávkové soubory (jeden pro optimalizaci systému a druhý pro provedení

záloh důležitých souborů).



Výše zmíněné aplikace jsme nechtěli automaticky spouštět při každém startu

Windows, nýbrž dávkový soubor pro provedení zálohy jen každý sedmý pracovní

den, ostatní tři programy pouze jednou denně a z toho plánovač úkolů i v

případě, že bychom během dne počítač několikrát vypnuli a opět zapnuli. Pokud

bychom počítač během jednoho dne nastartovali několikrát, pak při čtvrtém

spuštění má nastartovat dávkový soubor pro optimalizaci systému a při šestém

spuštění počítače program pro práci s elektronickou poštou.



Celý text skriptu je velmi podrobně okomentovaný. Asi nejzajímavější jsou pro

nás první tři řádky. Do nich se totiž ukládá, kolikrát jsme již během dnešního

dne spustili počítač, datum posledního spuštění počítače a počítadlo dnů určené

pro dávkový soubor provádějící zálohu důležitých souborů. Na základě

vyhodnocení těchto údajů se pak spouštějí odpovídající úlohy. Těsně před

ukončením skriptu se provádí aktualizace hodnot v prvních třech řádcích skriptu

a k nim se nakopíruje neměnná část skriptu.



Tato možnost VBS skriptů zapisovat samy do sebe a tím měnit svůj obsah, byla

hodně diskutována v internetových fórech, neboť neustálá změna kódu teoreticky

odpovídá možnosti působit jako Stealth viry. Nemějte však obavy náš příklad

ukazuje tu prospěšnější stránku možnosti, jak využít toho, že skripty mohou

samy měnit svůj obsah. Tím vyplouvá na povrch obrovská výhoda toho, že není

třeba pro uchovávání nějakých dalších dat používat žádné externí INI soubory

nebo registr. Skript je tak daleko méně náchylný k poškození když

předpokládáme, že se sám nedokáže smazat, pak v něm zůstávají všechny informace

natrvalo.







Windows Scripting Host: Základní pojmy



Interpreter



Skript, který napíšeme, není sám o sobě spustitelný. Příkazy, jež obsahuje,

musí být načteny nějakým programem a převedeny do podoby srozumitelné

operačnímu systému. U VB skriptů a Java skriptů je tímto programem právě

Windows Scripting Host.





Metody



Slovo metody si nejlépe objasníme na konkrétním příkladu. Když například

spustíte program MS Word, můžete jím upravovat všechny textové dokumenty. A

právě všechny možnosti programu MS Word můžeme nazvat metodami představují tedy

jakési rozhraní mezi uživatelem a objekty (viz dále).





Objekty



Objekty rozšiřují možnosti skriptů. Jako konkrétní příklad opět uvedeme

přirovnání k programu MS Word. Tato aplikace je vlastně jeden složitý objekt,

jenž se skládá z celé řady metod. Ty této aplikaci umožňují provádět s textem

nejrůznější úpravy. Tak například máme-li ve skriptu integrovaný objekt s

názvem Word, jenž stojí na nejvyšším stupni hierarchie, znamená to, že jsou k

dispozici skriptu všechny metody týkající se úpravy textu.





Cykly



Má-li program některé činnosti opakovat několikrát, potřebuje programátor

takzvané cykly (Do Loop, For Next, While Wend). Např. otevření všech souborů v

nějaké složce se z programátorského hlediska vyřeší cyklem, v němž budou

příkazy pro otevření jednoho souboru. Po spuštění bude tento cyklus postupně

otevírat jednotlivé soubory a poběží tak dlouho, dokud nebudou všechny soubory

otevřeny.





Skript



Skript je textový soubor obsahující příkazy. Když každý řádek skriptu obsahuje

přesně dohodnuté příkazy programovacího jazyka a ve správném tvaru, pak může

interpreter tyto příkazy převést do podoby srozumitelné počítači (interpretovat

je) a skript spustit.





Proměnné



Proměnné si můžeme představit jako jakési zásobníky, do nichž skript během své

činnosti zapisuje určité hodnoty např. texty (jak vstupní, tak výstupní),

parametry vložené při stisku tlačítek, číslice apod. Hodnoty uložené v

proměnných se mohou v průběhu provádění skriptu měnit.





Větvení programu (podmínky)



Má-li program vykonat určité příkazy v závislosti na určitém stavu (například v

závislosti na hodnotě proměnné, existence souboru apod.), použije programátor

podmínku. Mezi nejrozšířenější patří struktura If then Else End If.





Visual Basic



Tento programovací jazyk se vyvinul z jazyků Basic a QBasic a během svého

vývoje se dočkal řady zdokonalení. Byl upraven pro Windows odtud také přídomek

Visual. VB skript je sice založen na Visual Basicu, je však na rozdíl od něj

daleko méně rozsáhlý.





Windows Scripting Host



Windows Scripting Host dodávaný ve Windows 98 se skládá z interpreteru

představovaného soubory CSCRIPT.EXE a WSCRIPT.EXE, jakož i z několika DLL

knihoven sloužících pro podporu VB skriptu a Java skriptu. Jeho schopnosti se

dají rozšířit skrz další DLL knihovny.









Windows Scripting Host: Základní pojmy



VB SKRIPT

Skriptovací jazyky a interpretery



Visual Basic skript je skriptovací jazyk založený na programovacím jazyce

Visual Basic, a vzhledem k tomuto lze logicky očekávat shodu s tímto

programovacím jazykem, anebo také s jazykem Visual Basic for Applications. Ten

je dodáván v rámci programů kancelářského balíku MS Office. Pakliže tedy znáte

výše zmiňované programovací jazyky, nebude vám činit potíže ani Windows

Scripting Host. Velký rozdíl oproti „skutečnému“ Visual Basicu spočívá v tom,

že skripty napsané v programu Windows Scripting Host a také v jazyce Visual

Basic for Applications nejsou jako takové spustitelné, nýbrž vyžadují překladač

(interpreter), který příkazy ve skriptu řádek po řádku přeloží. Pro napsání

samotného textu skriptu stačí jakýkoliv textový editor, podporující standard

ANSI, například program Poznámkový blok. Kompilace (překlad) skriptu do

spustitelného souboru není možná roli interpreteru vykonává tzv. Scripting

Engine. U programu Windows Scripting Host roli Scripting Engine vykonávají

soubory WSCRIPT.EXE a CSCRIPT.EXE. Jejich úkolem je skript přeložit a spustit.

Standardním interpreterem je soubor WSCRIPT.EXE. Program CSCRIPT.EXE vyžaduje

program Příkazový řádek pro MS-DOS, běží však pouze pod Windows, ne v režimu

MS-DOS.



Oba programy ale dokáží více než překládat a spouštět skripty psané ve Visual

Basicu. Vlastníte-li příslušná rozšíření těchto programů, dokáží se vypořádat i

s jinými skriptovacími jazyky. Standardně je podporován pouze Java skript,

skriptovací jazyk původně určený pro program Netscape Communicator. Pro podporu

dalších jazyků jako Rexx nebo Perl je nutná instalace dalších komponent

spočívající v rozšíření o další DLL knihovny.



V podstatě ale pro interpretaci skriptů postačí také internetový prohlížeč

(Internet Explorer či Netscape Communicator). Podstatná výhoda Scripting Engine

ve srovnání právě s internetovými prohlížeči spočívá v tom, že se jedná o

relativně malé programy, jež jsou velmi málo náročné na operační paměť.







PROGRAM NEBO SKRIPT?

Skript většinou bohatě stačí



Skriptovací jazyky nám umožňují přístup na základní funkce operačního systému.

Soubory ani složky si nemohou být před vaším zásahem jisty, a pomocí skriptu se

dá upravit rovněž i registr Windows.



Schopnosti skriptů neustále rostou. K dispozici jsou na internetu rozšíření ve

formě DLL knihoven i prvků Active-X. Díky této skutečnosti se velmi rychle

snižuje rozdíl oproti skutečným programovacím jazykům.



Obzvláště pro VB skript se v současnosti valí spousta vylepšení. Mezera mezi

skripty a skutečnými programy však nebude nikdy skutečně vyplněna, a to z toho

důvodu, že programovací jazyky nabízejí díky kompilaci jednu nepopiratelnou

výhodu zkompilované programy jednoduše běží o poznání rychleji.







SKRIPT, NEBO DÁVKOVÝ SOUBOR?

Obojí se dá zkombinovat



Rozhodnutí, zda použít skript, nebo dávkový soubor, je jednoduché. Dá-li se

nějaký úkol uspokojivě vykonat pomocí dávkového souboru, měli byste jej

upřednostnit. Už třeba porovnání tohoto příkazu MS-DOS



del d:\temp*.*



s jeho obdobou v programu Windows Scripting Host



Set MyFile = CreateObject („Scripting.FileSystemObject“)

MyFile.DeleteFile („d:\temp*.*“)



ukazuje, že zvláště pro jednoduché úkony jako jsou manipulace se soubory,

spouštění programů, či přístup k systému souborů, jsou dávkové soubory velmi

vhodné. Naproti tomu skripty mají bez definice externích objektů (zde

FileSystemObject) jen velmi omezené možnosti a včlenění takového objektu

znamená dlouhé psaní. Jakmile se však jedná o ovlivňování běhu programu

zadáváním parametrů, vyhodnocování řetězců, rozhodování na základě nějaké

události či načítání obsahu souborů, pak jsou skripty jednoznačně výhodnější.



Pakliže to bude třeba, neměl by se člověk stydět zastaralý dávkový soubor

zkombinovat s moderním skriptem. Spuštění skriptu z dávkového souboru (příkazem

wscript.exe myscript.vbs) je stejně tak možné jako spuštění dávkového souboru

ze skriptu (příkazem shell.run („mybatch.bat“) samozřejmě pokud je definovaný

potřebný objekt typu Shell.







NÁSTROJE A INFORMACE

Jednoduchý textový editor stačí



Skripty v programu Windows Scripting Host jsou v podstatě jednoduché textové

soubory. Z toho důvodu pro jejich vytváření a úpravu vyhoví prakticky každý

jednoduchý textový editor, jakým je např. Poznámkový blok nebo editor systému

MS-DOS (představovaný souborem EDIT.COM). Jelikož interpreter při výskytu chyby

ve skriptu hlásí číslo řádku, ve kterém se chyba nachází, je použití editoru

systému MS-DOS výhodnější ten totiž vpravo dole ukazuje číslo řádku, na němž v

daném okamžiku bliká kurzor. Na druhou stranu byste v něm neměli používat žádné

české znaky, jelikož program EDIT.COM vytváří ASCII text.



Pro tvorbu rozsáhlejších skriptů se doporučuje používat editory, jež dokáží

barevně odlišit příkazy programu od komentářů apod. Velmi dobrými programy je

například český freewarový program PSPad (PSPAD_SETUP.EXE, 1,31 MB) najdete jej

, případně na internetové adrese http:/pspad.zde.cz nebo sharewarový program

Ultraedit (UEDIT32.ZIP, 1,36 MB). I tento program naleznete , nebo si jej

můžete stáhnout na internetové adrese

http://www.idmcomp.com/dow­nloads/index.html.



Používáte-li program MS Word od verze 97 a vyšší nebo MS Excel verze 95 a

vyšší, můžete vlastní skripty vytvářet a testovat také v programu Editor jazyka

Visual Basic. Visual Basic Script (VB Script) a Visual Basic for Application

(VBA) jsou totiž tak podobné, že skripty, které běhají v programu MS Word,

budou ve většině případů bez jakýchkoliv modifikací běhat i v programu Windows

Scripting Host. Aplikace MS Office 2000 má v sobě obsažen navíc ještě program

Microsoft Script Editor, s jehož pomocí můžete upravovat skripty v souborech

HTML.



Dokumentace firmy Microsoft k aplikaci VB Script je velmi dobrým začátkem pro

pochopení tohoto jazyka. Zvláště vhodná je jako referenční příručka.

Dokumentaci naleznete na internetové adrese

http://msdn.microsoft.com/scrip­ting/vbscript/download/vbsdoc­.exe. Soubory

nápovědy obsahují základní příkazy, většinou i s konkrétními příklady. Kdo se

chce zabývat jazykem JavaScript, najde na internetu rovněž velmi bohatou

dokumentaci, a to na adrese

http://msdn.microsoft.com/li­brary/default.asp?url=/li­brary/en-us/script56/html/j

s56jsoriJScript.asp?frame=true. Další informace včetně spousty příkladů lze

nalézt také na WWW stránkách http://cwashington.netreach.net a

www.windowsscript.com. Odpovědi na speciální dotazy lze obdržet v diskusních

skupinách microsoft.public.scripting.vbscript a microsoft.public.scripting.wsh.







EXTERNÍ OBJEKTY

Objekty rozšiřují oblast funkčnosti skriptu



Existuje jen velmi málo užitečných skriptů, jež se obejdou bez použití

externích objektů. Tři nejdůležitější objekty se nazývají

Scripting.FileSystemObject, WScript.Shell a WScript.Network. Svoji roli mají i

objekty WshShell.CreateShortcut a WshShell.SpecialFolders.



Schopností kteréhokoliv externího objektu můžete využívat až tehdy, když jej

definujete. Každou jednotlivou schopnost objektu nazýváme slovem metoda. Tak

například objekt Scripting.FileSystemObject má metodu s názvem OpenTextFile,

jež dokáže otevírat textové soubory. Nyní příklad konkrétního použití této

metody:



Příkazem Set definujete nový objekt například pod jménem proměnné MyFiles

(jméno proměnné může být libovolné). Tento objekt tedy má nyní k dispozici

metodu OpenTextFile, kterou můžete použít na libovolný soubor. Otevřený soubor

se dá načítat mnoha způsoby, třeba řádek po řádku („ReadLine“) nebo najednou

(„ReadAll“). Pro načtení a zobrazení obsahu souboru AUTOEXEC.BAT tedy stačí

skript s názvem MYAUTO.VBS (naleznete jej ) obsahující tyto tři řádky:



Set MyFiles = CreateObject(„Scripting.Fi­leSystemObject“)

Set MyText = MyFiles.OpenTextFile(„C:\autoexec.bat“)

wscript.echo MyText.readall



V dalším příkladě použijeme další důležitý objekt, a to WScript.Shell. U něj

nás bude zajímat metoda Run, jež umí spustit programy a také otevřít uživatelem

registrované typy souborů. Dvouřádkový skript s názvem RUN.VBS (najdete jej )

obsahující tyto dva řádky



Set ws = CreateObject(„WScript.Shell“)

ws.Run(„NOTEPAD.EXE c:\autoexec.bat“)



otevře soubor AUTOEXEC.BAT v programu Poznámkový blok. Všimněte si, že

programy, které samy dokáží přistupovat na systém souborů, nepotřebují tuto

vlastnost dodatečně definovat, takže připojování objektu FileSystemObject není

v těchto případech nutné.



Za spuštění programu Poznámkový blok odpovídá metoda Run, jež je součástí

objektu WScript.Shell. Tento nepostradatelný objekt dále nabízí metody pro

úpravu registrů (např. RegRead a RegWrite), nebo pro práci s proměnnými:



Set X = Wscript.CreateObject(„Wscript.Shell“)

For Each Var In X.Environment(„PROCESS“)

vstr=vstr & chr(13) & Var

Next

wscript.echo vstr



Tento příklad naleznete pod názvem ENV-INFO.VBS.



Objekt Wscript.Network dokáže připojit, jakož i odpojit síťové disky a rovněž

načíst informace o síti, v níž je počítač připojen. Níže uvedený dvouřádkový

ukázkový skript s názvem NET-INFO.VBS (je ) zobrazí název počítače a jméno

právě přihlášeného uživatele:



Set objNet = WScript.CreateObject( „WScript.Network“ )

Wscript.Echo objNet.ComputerName & " " & objNet.UserName







DIALOGOVÁ OKNA

Komunikace s uživatelem



Možnosti vytváření dialogových oken jsou v programu Windows Scripting Host

poměrně omezené, pro běžné použití ale většinou bohatě postačí. Ostatně metodu

Wscript.Echo jsme již použili v minulém příkladě, a to za účelem zobrazení

určité informace na monitor. Flexibilnější je v tomto ohledu funkce MsgBox.

Dialogové okno obsahuje tlačítek několik. Podle toho, které tlačítko uživatel

stiskl, se nastaví odpovídající hodnota proměnné.



Jako příklad funkce MsgBox uvádíme skript MESSAGE.VBS, jenž rovněž najdete



Set M = CreateObject(„Scripting.Fi­leSystemObject“)

Set T= M.GetFile(„c:\autoexec.bat“)

x=MsgBox („Skutečně chcete soubor odstranit? Byl vytvořen: " &

T.DateLastAccessed,3)

wscript.echo x



Skript ovšem ve skutečnosti žádný soubor nemaže, pouze zobrazí hodnotu proměnné

x. Můžete jej tedy bez obav otestovat.



Další funkce s názvem InputBox vytváří dialogové okno, do něhož může uživatel

vepisovat text a uložit jej do nějaké proměnné:



x=inputbox("Zadejte číslo: ")

erg=x*3.14

wscript.echo x & " * 3,14=“ & erg



Tento příklad naleznete pod názvem INPUT.VBS.







CYKLY

Opakování příkazů



Cykly slouží k několikanásobnému opakování příkazů. Takovým praktickým

příkladem může být vyhledávání nějakého řetězce v textovém souboru, kdy se v

textu obsahujícím několik odstavců mají tyto postupně prohledat. Znamená to

opakovaně spouštět funkci, která toto vyhledávání zajistí. Dalším příkladem

může být využití cyklů i u zdánlivě tak jednoduchých úkolů, jako jsou

manipulace se soubory. V tomto případě nadefinujeme sadu příkazů, které se mají

provést pro jeden soubor, a tu pak zařadíme do cyklu. Tak pohodlně zařídíme

provedení těchto příkazů pro libovolné množství souborů. Následující skript s

názvem FOREACH.VBS (je ), který aplikuje výše zmíněný přístup, slouží k vypsání

všech souborů nacházejících se v kořenovém adresáři disku C:.



Set MyFiles = CreateObject(„Scripting.Fi­leSystemObject“)

Set Folder = MyFiles.GetFolder(„c:\“)

Set Soubory = Folder.Files



For Each X in Soubory

L = L & X.Path & chr(9) & X.DateLastAccessed & chr(13)

Next



wscript.echo L



Skript prochází kořenový adresář disku C: a pro všechny soubory ukládá do

proměnné L jména souborů a datum jejich posledního přístupu.



Cyklus typu For Each Next je zvláštním případem cyklu typu For -pravděpodobně

je však častěji používaný než standardní cyklus typu For, neboť zcela

samostatně provádí příkazy pro všechny prvky nějakého objektu. U cyklu typu For

Next musíte sami nadefinovat, kolikrát se má cyklus provést. Takže příkaz



For x = 1 to 100



Next



znamená, že příkazy uvnitř cyklu se provedou přesně stokrát.



Důležitější a také flexibilnější je cyklus typu Do Loop. Příklad jeho využití

vám přinášíme ve skriptu s názvem DO-LOOP.VBS (najdete jej ). Skript načte

soubor a řádek po řádku jej vypisuje tak dlouho, dokud nevypíše poslední řádek.



Set M = CreateObject(„Scripting.Fi­leSystemObject“)

Set Dat = M.OpenTextFile(„c:\autoexec.bat“)

Do

n = n + 1

Radek = Dat.ReadLine

wscript.echo n & „. řádek: " & Radek

Loop Until Dat.AtEndOfStream = True



Podmínka, jež musí být splněna, aby se cyklus ukončil, se může nadefinovat

velmi volně. Můžete třeba dovnitř cyklu zařadit počítadlo a pak příkazem Loop

Until n=20 dosáhnout podobného výsledku jako při použití cyklu typu For Next.

Také můžete nechat cyklus běhat tak dlouho, dokud bude platit podmínka, že

proměnná je prázdná (Loop While text= ""), nebo naopak dokud není prázdná,

případně pomocí příkazu



Do While ie4.ReadyState4

Loop



nechat běžet prázdnou smyčku tak dlouho, dokud se nesplní vámi zadaná podmínka.







PODMÍNKY

Rozvětvování a rozhodování



Velmi náročná na přemýšlení je logika při používání podmínek ve skriptu. V nich

určujeme, jak se má skript chovat v určitých situacích, jež se během provádění

skriptu vyskytnou. Pro definování podmínky máme k dispozici příkaz If Then Else

End If. Když je podmínka uvedená za příkazem If splněna, pokračuje skript

příkazem uvedeným na dalším řádku. Jestliže podmínka splněna není, pokračuje

příkazy uvedenými za výrazem Else (viz ukázkový skript IF-THEN.VBS, jenž je k

dispozici ).



Name = InputBox ("Zadejte heslo:“)

Pass = „DAGOBERT“

If ucase(Name) = Pass Then

Vyst = MsgBox(„OK!“)

Else

Vyst = MsgBox(„Sorry!“)

End If



Jestliže není podmínka uvedená za příkazem If splněna a výraz Else chybí, pak

se jednoduše nestane vůbec nic. Samozřejmě můžete do podmínky mezi příkazy If

End If vkládat další podmínky If Then If. Kvůli udržení přehledu se doporučuje,

abyste při psaní všechny příkazy, jež se budou nacházet v bloku pod příkazem

If, odsazovali tabulátorem nebo několika mezerami.



Další možností pro definování podmínky je příkaz Select Case End Select, což je

struktura, již využijete v případě, kdy se má vybírat z několika možností. Asi

nejjednodušším příkladem je skript s názvem DATUM.VBS.



den=weekday(date())

select case den

case 1 wden=„Neděle“

case 2 wden=„Pondělí“

case 3 wden=„Úterý“

case 4 wden=„Středa“

case 5 wden=„Čtvrtek“

case 6 wden=„Pátek“

case 7 wden=„Sobota“

end select

msgbox wden & „, " & date(), 64,"Dnešní datum“



Skript po spuštění vypíše dnešní datum včetně názvu dne.







PODPROGRAMY

Jasnější struktura skriptu



V aplikaci Windows Scripting Host můžete určité řady příkazů umístit do tzv.

podprogramů. Ty pomáhají udržet přehlednost skriptu a zabraňují zbytečnému

narůstání jeho velikosti opakovaným vypisováním stejných bloků příkazů.

Příkladem využití podprogramů je skript nazvaný SUB.VBS (), jenž načte všechny

soubory v kořenovém adresáři disku C:\ a postupně je předá velmi jednoduchému

podprogramu s názvem ukazsoubor, který je zobrazí.



Set X = CreateObject(„Scripting.Fi­leSystemObject“)

Set F = X.GetFolder(„c:\“)

Set vsesoub = F.Files

For Each soub in vsesoub

Call ukazsoubor

Next

Sub ukazsoubor

wscript.echo soub

End Sub







PROMĚNNÉ

Místo pro informace všeho druhu



Naše drobné ukázkové skripty obsahovaly celou řadu tzv. proměnných. Ani jeden

příklad z nich však není schopen ukázat jejich velmi důležitou vlastnost.

Hodnoty proměnných se totiž mohou během provádění skriptu měnit. Následující

cyklus typu Do Loop



Do

n = n + 1

If n = 4 Then n = 98

wscript.echo n

Loop Until n = 100



ukazuje, jak se proměnná n během provádění skriptu chová. Cyklus proběhne pouze

šestkrát místo stokrát, neboť při n = 4 se velikost proměnné n zvýší na 98.

Pokud by se jednalo o nějaký seriózní skript, muselo by samozřejmě toto zvýšení

hodnoty mít nějaký svůj důvod.



Typické pro změnu hodnoty proměnných v cyklu je i následující příklad:



For n = 1 to 9

text=text & n & „. ACDC“ & chr(13)

wscript.echo text

Next



Tento cyklus ( jej najdete jako VAR-XMPL.VBS) vypíše podle jistých pravidel

řetězec čtyř písmen a přiřadí jej k již existujícímu řetězci. Textové proměnné

se spojují prostřednictvím parametru &. Ačkoliv to není bezpodmínečně nutné, je

dobrým zvykem, deklarovat proměnné příkazem Dim:



Option Explicit

Dim MyFiles, MyText, n



To zabraňuje tomu, aby se proměnné definovaly podle libosti a také tomu, aby

nedošlo k jejich rozpornému použití v různých částech skriptu. Když v textu

skriptu uvedete řádek Option Explicit, vyžádáte si tím nutnost deklarování

všech proměnných, které se budou ve skriptu používat. Pak již tedy nebude

možné, aby se najednou uprostřed textu skriptu objevila například proměnná x=10.



Když se podíváte na naše ukázkové skripty, zjistíte, že bráno z tohoto pohledu

patří k té nedbalejší části světa programátorů a programování vůbec, což ale v

žádném případě nesnižuje jejich hodnotu a užitečnost.









5. Správa systému



Jak velmi jednoduše zjistit místo na disku obsazené složkami



PROBLÉM: Pro určení velikosti místa na disku obsazeného složkami či soubory

máte ve Windows několik možností. Můžete si nechat složky či soubory vyhledat

pomocí nabídky Start/Hledat/Soubory či složky, a příkaz Vlastnosti z

kontextového menu mimo jiné zobrazí i velikost složky či souboru. Podobně

vhodný je příkaz DIR, jenž se používá v systému MS-DOS. Dokonalý přehled o

velikostech složek ovšem získáte pouze tehdy, když budete mít možnost

vyfiltrovat ze všech složek na vašem počítači jen ty vámi požadované. To je

ovšem velmi komplikovaná záležitost.



ŘEŠENÍ: Následující příklad ukazuje, jak se dá zmiňovaný problém elegantně

vyřešit za použití programu Windows Scripting Host. Náš ukázkový skript s

názvem READFLDR.VBS (najdete jej ) vám vypíše a určí velikost podsložek ve vámi

zadané složce. Do dialogového okna skriptu stačí zadat cestu ke složce, u které

chcete určit velikost podsložek tedy například c:\ nebo n:\tools. Můžete zadat

jakoukoliv cestu, tudíž i k diskům v počítačové síti.



Jestliže nezadáte žádnou cestu a tedy jednoduše klepnete na tlačítko OK nebo

Storno, je náš skript nastaven tak, aby zobrazil velikosti podsložek složky, ve

které máte nainstalována Windows. Ta je zastoupena proměnnou windir a taková

složka je na každém počítači. Skript pro přístup k systému souborů vytváří

objektové proměnné. Nakonec zavolá podprogram SubFolders, jenž vytvoří seznam

všech podsložek. Tento seznam se vytvoří v okně programu Internet Explorer 4/5.

Pro rozdělení textu do dvou sloupců (název podsložky a k ní odpovídající

velikost) je potřeba zadat příkaz



ie4.document.body.innerHTML=



a k němu příslušné příkazy v jazyku HTML, které zajistí vytvoření tabulky

uvnitř okna programu Internet Explorer. Parametry DIV ID=Path a DIV ID=Size

vytváří místo, do nějž později skript pomocí příkazů



ie4.document.all.Path.inser­tAdjacentHTML „BeforeEnd“, Path & „


ie4.document.all.Size.inser­tAdjacentHTML „BeforeEnd“, Size & „




vkládá údaje o názvu, případně velikosti dané podsložky. Výslednou tabulku

zobrazenou v okně programu Internet Explorer si můžete prohlížet, případně i

vytisknout prostřednictvím příkazu Soubor/Tisk.









6. Vyvolávání WWW stránek



Jak bez okolků získat na internetu potřebné informace



PROBLÉM: Často potřebujete informace poskytované nejrůznějšími službami na

internetu. Nejlepší by bylo, kdybyste tyto služby mohli využívat přímo bez

toho, abyste museli načítat internetovou stránku a zdržovat se vyplňováním

jakýchkoliv dialogových oken.



ŘEŠENÍ: Jak vám v následujícím textu ukážeme, existuje díky našemu skriptu

ACROSEARCH.VBS (opět jej najdete ) alespoň v nejjednodušších případech možnost,

jak si na internetu ulehčit vyhledávání informací, a konečně jak jinak, než

prostřednictvím skriptů. Výraz, který chceme vyhledávat, zadáme do dialogového

okna při spuštění skriptu, a ten jej přímo zadá do patřičného místa vyhledávače

a zobrazí výsledky vyhledávání.



Předpokladem ovšem je zveřejnění vyhledávacího skriptu a to, že tento se příliš

nemění (pak by totiž bylo třeba změnit odpovídajícím způsobem i náš skript).

Všechny tyto předpoklady splňuje například služba na internetové adrese

www.chemie.fu-berlin.de. Jedná se o praktický slovník, ve kterém lze nalézt

významy nejrůznějších zkratek. Díky našemu skriptu ušetříte dobu potřebnou pro

spuštění internetového vyhledávače a pro zadání internetové adresy. Po zadání

zkratky do dialogového okna skriptu obdržíte opět ve formě dialogového okna

výsledky vyhledávání. Ještě jsme zapomněli zmínit splnění dvou podmínek. Ta

první je vcelku samozřejmá musí být navázáno připojení na internet. Druhá

podmínka po vás chce, abyste jako internetový prohlížeč měli nainstalovaný

Internet Explorer verze 4 a vyšší.









7. Vyhledávání



Jak upravit a vytisknout výsledky vyhledávání



PROBLÉM: Dialogové okno pro vyhledávání souborů či složek nenabízí k lítosti

většiny uživatelů žádnou možnost, jak si výsledky hledání uložit do souboru

nebo poslat na tiskárnu. V operačním systému MS-DOS to šlo. Co si ale budeme

povídat. Syntaxe příkazu DIR pracujícího na příkazovém řádku MS-DOS už dnes, v

době kdy naprostá většina uživatelů používá ke své práci myš, nikoho moc

nenadchne.



ŘEŠENÍ: Ale i zde se nabízí možnost využít okna programu Internet Explorer

verze 4 a vyšší jako okna pro výstup informací. Právě okno programu Internet

Explorer vám umožní ručně si výsledky upravit, a případně i vytisknout.



Náš ukázkový skript FILTER.VBS (najdete jej ) vám ukáže princip. Nejprve v

dialogovém okně skriptu zadáte cestu, kterou budete chtít vyhledávat. Pokud

tento dialog ignorujete, je přednastaveno vyhledávání na disku C:\. V

následujícím okně zadáte příponu souboru, například VBS, jako výraz, který

chcete vyhledat. Standardní nastavení je přípona DOC. Po potvrzení začne

prohledávání a zapisování výsledků do okna programu Internet Explorer.



Abyste poznali, zda vypisování výsledků (mimochodem ne zrovna moc rychlé) do

okna programu Internet Explorer pokračuje, či již skončilo, vypisují se kromě

nalezených souborů i složky, které se prohledávají, a to i v případě, že žádné

soubory požadovaného typu neobsahují.



Tuto volbu lze vypnout tak, že smažete řádky 21 a 22, příp. z nich uděláte

komentář pomocí znaku apostrof ( \ ). Po ukončení vyhledávání se skript zeptá,

zda má výsledky vytisknout.









8. Sledování provádění skriptů



Jak zobrazit průběh činnosti skriptu v okně programu Internet Explorer



PROBLÉM: Za normálních okolností vykonává Windows Scripting Host svoji práci

tiše a nenápadně na pozadí. To je sice ve většině případů velká výhoda, ovšem

běžný uživatel Windows může při déletrvajících operacích upadat do nejistoty,

zdali skript ještě vůbec pracuje.



ŘEŠENÍ: Tomu se dá snadno odpomoci tím, že budeme průběh činnosti skriptu

monitorovat v okně programu Internet Explorer. Ostatně v minulém tipu jsme

právě IE použili jako prostředí pro zobrazení výsledků činnosti skriptu.



Nastavení velikosti okna jsme přitom provedli prostřednictvím parametru width a

height, jeho vzhled jsme pak nastavili pomocí údaje visible.



Pro zobrazování průběhu činnosti skriptu můžeme s klidným svědomím oželet menu

i panel nástrojů včetně panelu Adresa a stavového řádku. Tyto funkce programu

Internet Explorer vypneme tak, že přiřadíme výrazům Address Bar, MenuBar,

ToolBar a StatusBar hodnotu vbFalse.



Příkladem skriptu je soubor READFLD2.VBS. Najdete jej a když prozkoumáte jeho

obsah, zjistíte, že je podobný dříve uvedenému skriptu READFLDR.VBS, navíc ale

obsahuje podprogramy Ukazstav a Updatestav. Náš ukázkový skript jsme omezili

jen na vypisování názvu a velikosti podsložek ve složce, v níž jsou

nainstalovaná Windows (ve skriptu jí odpovídá parametr Windir).



Po spuštění se zobrazí díky podprogramu Ukazstav nové malé okno programu

Internet Explorer. Podprogram Updatestav pak do tohoto okna vypisuje při

nalezení každé podsložky aktuální hodnotu proměnné i. Teprve po skončení

prohledávání se zobrazí okno programu Internet Explorer s výsledky vyhledávání

(díky parametru ie4.visible=1).









9. Windows Scripting Host a e-mail



Pohodlnější a rychlejší odesílání e-mailů



PROBLÉM: Chtěli byste pravidelně rozesílat e-maily vámi vybranému okruhu

adresátů. Když jde o to takový e-mail co nejrychleji odeslat, je několikeré

spouštění programu pro práci s elektronickou poštou dosti otravné. Mít poštovní

program spuštěný neustále také není ideální řešení. Existuje nějaká možnost,

jak posílat elektronickou poštu prostřednictvím skriptu?



ŘEŠENÍ: Takovou pohodlnou funkci poštovního programu si můžete sami

naprogramovat. K tomu potřebujete jen drag&drop funkci programu Windows

Scripting Host a archiv představovaný souborem ASPEMAIL.ZIP. Archiv naleznete ,

případně se dá stáhnout na internetové adrese www.persists.com. Soubor

ASPEMAIL.ZIP rozbalte a v něm obsaženou knihovnu ASPEMAIL.DLL zkopírujte do

složky Windows\System. Nyní ji ještě musíte v systému Windows zaregistrovat. To

provedete příkazem



regsvr32 %windir%\System\Aspemail.dll



Po restartu počítače si otevřete v textovém editoru otevřete skript

SENDMAIL.VBS a upravte jej podle nastavení vašeho systému.



Potřebujete zadat poštovní server a svoji e-mailovou adresu. Nakonec můžete

zadat e-mailové adresy všech adresátů, jimž budete e-maily posílat.



Když budete chtít všem adresátům poslat nějakou zprávu, jednoduše textový

soubor upustíte na ikonu skriptu. Poté se hned objeví očíslovaný seznam všech

adresátů. Vy si označíte čísla těch, kterým budete chtít e-mail poslat, a

potvrdíte stiskem tlačítka OK. Po odeslání e-mailu obdržíte hlášení, že e-maily

v pořádku odešly.









10. Rychlejší práce se složkami



Jak mít všechny prostředky Windows pod palcem



PROBLÉM: Dokonce i když si vytvoříte k těm nejpoužívanějším složkám a souborům

zástupce, přesto zůstává na velkých pevných discích nebo na rozlehlé síti ještě

dost poměrně často používaných složek, na které se musíte dosti pracně

proklepávat pomocí myši.



ŘEŠENÍ: Prostřednictvím skriptu můžete mít všechny prvky systému hravě dostupné

v jednom souboru. Princip spočívá v tom, že do dialogového okna skriptu se

zadávají ne celé cesty, ale jejich zkratky. To je bezesporu daleko rychlejší,

než proklepávání se přes nejrůznější disky a složky přes ikonu Tento počítač

nebo Okolní počítače. Tak např. ke složce C:\Windows\System\Iosubsys se dá

velmi snadno dostat pouhým zadáním zkratky Iosub, dále složka

D:\Dokumenty\Skripty\Pepa se vyvolá zkratkou pepa. Pokud máte složku, která má

stejné jméno, pouze vždy leží na jiném disku, kupříkladu složka Dokumenty

ležící v jednom případě na disku D: a v druhém případě na disku N:, stačí pro

přesnější zadání napsat do dialogového okna výraz d: dokumenty.



A jak to celé funguje? Základem všeho je textový soubor, obsahující všechny

složky na všech námi vyžadovaných discích. Tento seznam byste měli čas od času

aktualizovat. Po spuštění skriptu se objeví dialogové okno, do něhož zadáte co

možná nejkratší, nejvýstižnější a nejjednoznačnější řetězec. Poté skript

rozevře seznam se všemi dostupnými složkami a vyhledává patřičný řetězec.

Najde-li jej, zobrazí dialogové okno s dotazem, zdali chceme složku otevřít.



Abyste si mohli udělat lepší představu, vytvořili jsme pro vás dva skripty s

názvy FOLDERLIST.VBS a FOLDERSTART.VBS, které demonstrují oba procesy jak

načítání složek do textového souboru, tak vyhledávání v textovém souboru. Oba

najdete .



Skript FOLDERLIST.VBS, jenž vytváří textový soubor obsahující seznam všech

složek a souborů, je při velkém počtu položek poněkud pomalejší. Alternativou

by byl rychlejší příkaz DIR z prostředí operačního systému MS-DOS, ovšem ten

zase má potíže s diakritikou, proto jeho použití není výhodnější.



Naproti tomu skript FOLDERSTART.VBS pracuje velmi rychle, takže se spouští

prakticky okamžitě. Navíc automaticky spouští skript FOLDERLIST.VBS, jestliže

textový soubor se seznamem souborů a složek (který standardně leží ve složce

Windows\Command) neexistuje, anebo je starší jak 15 dní.



Pro praktické používání těchto skriptů je třeba udělat toto: Zkopírujte nejprve

oba skripty do složky %windir%\Command. Potom upravte soubor FOLDERLIST.VBS

tak, že v něm nahradíte písmena disků těmi, co odpovídají diskům na vašem

počítači.



Budete-li zadávat i síťové disky, musíte mít u všech podsložek práva pro čtení,

jinak se skript ukončí s chybovým hlášením. Konečně byste si měli pro skript

FOLDERSTART.VBS vytvořit na vhodném místě zástupce (např. na pracovní ploše,

nabídce Start či ve složce Po spuštění).









11. Neviditelné skripty



Jak donutit skript, aby běžel na pozadí



PROBLÉM: Windows Scripting Host má jednu opravdu velkou výhodu oproti například

dávkovým souborům, nebo i programu Q-Basic. Je to nepatrná spotřeba systémových

prostředků v případě, kdy skript nepracuje a čeká na nějaké zadání. V tomto

čekacím režimu spotřebovává od 0 do 1 % výkonu procesoru, zatímco např. čekací

smyčka s příkazem Sleep v Q-Basicu spotřebovává 90 % výkonu procesoru, takže o

nějakém „spaní“ tu nemůže být řeč. Když o tom popřemýšlíme, pak by bylo

nanejvýš vhodné VB skripty používat k tomu, aby neustále běžely na pozadí a

vždy po několika minutách tu uklidily operační paměť, tu uložily nějaké

soubory, případně odeslaly nějaké e-maily. Bohužel se skript nedá do „čekacího“

režimu uvést bez toho, aby se neobjevilo nějaké rušivé dialogové okno.



ŘEŠENÍ: Existuje pouze jedna jediná možnost, jak skript donutit čekat. Metoda s

názvem Popup patřící objektu Shell dokáže vytvořit uživatelem definované

dialogové okno podobné tomu, jaké umí vytvořit metoda MsgBox, patřící programu

Windows Scripting Host. Toto okno chvíli čeká a poté automaticky zmizí. Toto v

našem případě skutečně rušivé okno se nedá principiálně nijak potlačit.

Existuje jeden trochu „divoký“ trik, jak dobu čekání dialogového okna Popup

využít k úplnému odstranění oken.



Jako ilustraci uvádíme dva skripty s názvy START.VBS a DO.VBS (oba jsou ).

Poklepejte na skript START.VBS. Tím jste jej spustili, ale zdánlivě se nic

neděje. Tento skript nyní nedělá nic jiného, než že neustále spouští skript

DO.VBS. Parametr 0,TRUE uvedený ve skriptu slouží k definování formy, v jaké se

skript DO.VBS má spouštět. Konkrétně v tomto případě slouží k potlačení Popup

dialogu. Skript DO.VBS nyní čeká 120 sekund na zadání příkazu. Poté naplní

proměnnou x 12 MB znaků mezer a po ukončení skriptu se těchto 12 MB paměti zase

uvolní.



Jedná se vlastně o velmi jednoduchý způsob optimalizace paměti. Kombinace obou

skriptů je zde použita proto, aby tento proces probíhal kompletně na pozadí a

tak co možná nejméně zatěžoval procesor.



Tento trik s optimalizací paměti je pouze příklad. Ve skriptu DO.VBS samozřejmě

lze zadat po výrazu



q=MShell.Popup("", 120, "", 0)



jakýkoliv jiný příkaz.









</f5></ctrl></f3></f1>