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/downloads/default.asp?url=/downloads/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
vyvoláte nápovědu, klávesa
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
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/downloads/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/scripting/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/library/default.asp?url=/library/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.FileSystemObject")
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.FileSystemObject")
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.FileSystemObject")
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.FileSystemObject")
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.FileSystemObject")
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.insertAdjacentHTML "BeforeEnd", Path & "
"
ie4.document.all.Size.insertAdjacentHTML "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.