Stránka 1 z 1

Ovládáme (nejen) windows pomocí visual basic script 1. díl

Napsal: 02 čer 2021 23:05
od ITCrowd
Protože dost často zde pomáhám s automatizací různých operací, rozhodl jsem se napsat úvod do skriptování v jazyce VBS (visual basic script). Proč zrovna vbs?
- je to pokročilejší skriptovací jazyk a umí více, než třeba .bat (v cmd), nebo .ps1 (powershell)
- syntaxe jazyka je velice podobná jazyku VBA (visual basic for Application) používaném v makrech ms office - tedy zabijete dvě mouchy jednou ranou.
- podporují ho všechny verze windows už od windows98
- naučíte se základům programování.
K čemu vbs použít? Atomatizace operací (např. zálohy), zajištění prostředí po přihlášení (připojení síťových prostředků), usnadnění práce (prohledávání logů), kontrola systémových prostředků (nastavení sítě, volné místo na disku) atd.
Začneme tím nejjednodušším - zprávou. Pro to existuje příkaz MsgBox
Syntaxe: MsgBox text, ikona+tlačítka, titulek
Ikony MsgBoxu:
IkonyMsgBox.png
Ikony MsgBoxu
IkonyMsgBox.png (27.28 KiB) Zobrazeno 3441 x

Tlačítka MsgBoxu:
TlacitkaMsgB.png
Tlačítka MsgBoxu


Nyní si můžeme zkusit napsat první skript. Kdysi jsem si takto dělal legraci z kolegů.

Kód: Vybrat vše

'První skript
Wscript.Sleep 20000  'čekání 20s
MsgBox "Vážený uživateli, Vaše bušení do klávesnice mě opravdu dost bolí!", vbOKOnly + vbExclamation,  "Zpráva operačního systému"


Takovýto skript jsem ukládal do složky po spuštění. Co skript dělá?
- po spuštění čeká 20s.
- po uplynutí 20s vypíše tuto zprávu:
MsgBoxpriklad.png
MsgBox - příklad


Všimněte si v kódu:
Příkaz Wscript.Sleep 20000 - to je čekací doba. Wscript.Sleep na tuto dobu (v milisekundách) skript "uspí". Uspaný skript nevytěžuje systémové prostředky.
apostrof " ' " - vše co je za ním interpreter ignoruje. Lze jej proto použít ke komentářům kódu. Doporučuji používat, lépe se pak v kódu orientuje.

MsgBox jako funkce: - MsgBox umí vrátit hodnotu stisknutého tlačítka.
Syntaxe: tlacitko = MsgBox (text, ikona + tlačítko, titulek)
Návratové hodnoty tlačítek:
MsgBoxReturn.png
Hodnoty tlačítek
MsgBoxReturn.png (10.28 KiB) Zobrazeno 3441 x

Kód by mohl vypadat takto:

Kód: Vybrat vše

'Zjištění jaké tlačítko bylo stisknuto
tlacitko = MsgBox ("Prosím stiskněte tlačítko", vbQuestion + vbYesNo, "Test tlačítka")

'Nalezení hodnoty
If tlacitko = vbYes Then
   Wscript.Echo "Stisknuto Ano"
Else
   Wscript.Echo "Stisknuto Ne"
End If

TestTlacitka.png
Jaké tlačítko bylo stisknuto?


Všimněte si v kódu:
- příkaz Wscript.Echo - funguje podobně jako MsgBox, je to však jen "zobrazovadlo". Nevrací stisknuté tlačítko a nelze si zvolit titulek okna. Používám jej pro kontrolu hodnot proměnných během ladění.
- sekvence příkazů If...Then...Else - větvení programu na základě splnění podmínky. V příkladu to znamená - pokud je vrácená hodnota vbYes, pak napiš "Stisknuto Ano". V opačném případě napiš "Stisknuto Ne".
- Odlišnost zápisu. Do proměnné tlacitko se ukládá vrácená hodnota stisknutého tlačítka. MsgBox je nyní zapsán jako funkce, a proto je text, ikona+tlačítka a titulek v závorkách.

Tolik k MsgBox.

Jaký editor používat pro vbs? S úspěchem používám vbsedit/, který disponuje i seznamem tříd windows. K základům postačí i neregistrovaná verze. Pokud si program zakoupíte, odstraní se zpoždění Debuggeru a získáte možnost váš kód zkompilovat do .exe souboru.
VbsEdit.png
VbsEdit

Jak můžete vidět, VbsEdit je opravdu velký pomocník. Na screenu můžete vidět možnosti objektu FileSystemObject

Tím bych považoval úvodní část za dostatečnou.
Budu rád za vaše komenty.

Příště se podíváme na proměnné a práci s nimi.
Odkazy:
Ovládáme (nejen) windows pomocí visual basic script 1. díl
Ovládáme (nejen) windows pomocí visual basic script 2. díl
Ovládáme (nejen) windows pomocí visual basic script 3. díl
Ovládáme (nejen) windows pomocí visual basic script 4. díl

Re: Ovládáme (nejen) windows pomocí visual basic script 1. díl

Napsal: 02 čer 2021 23:21
od Fox_25
Takže, s pomocí VBS si mohu napsat skript který ve složce "old" smaže složku "save", ve složce "záloha" přesune složku "save" do "old" a z nadřazeného adresáře překopíruje do složky "záloha" složku "save"?

Re: Ovládáme (nejen) windows pomocí visual basic script 1. díl

Napsal: 02 čer 2021 23:34
od ITCrowd
Především - je třeba používat plnou (absolutní cestu). tedy např.: C:\old. Složku save můžeš mít v každém adresáři (složce), co jich jenom je.Z toho, co jsi napsal není jasno, oč jde.
A jinak - samozřejmě.
Příklad pravidelného zálohování třeba zde: viewtopic.php?f=39&t=218692

Re: Ovládáme (nejen) windows pomocí visual basic script 1. díl

Napsal: 02 čer 2021 23:43
od Fox_25
Samozřejmě, to byl jen trochu kostrbatý příklad. Stručně řečeno, u hry hobo mám zálohu uložené hry vč. předchozí uložené hry a manuálně to dělat během hraní je prostě otravné. Vím že se to dá zautomatizovat, ale nechtělo se mi to hledat, takže díky za návod, respektive seriál.

Re: Ovládáme (nejen) windows pomocí visual basic script 1. díl

Napsal: 03 čer 2021 00:36
od ITCrowd
Pokud jsem to dobře pochopil, tak by se jednalo o jakési "prorotování" složek s uloženými savy. To samozřejmě lze, ovšem za předpokladu, že si hra nějaký save soubor "nedrží". V takovém případě by to nefungovalo. Systém by se bránil jak smazání, tak přepisu.
Můžeš to vyzkoušet třeba tak, že si v adobe readeru otevřeš nějaké pdf a zkusíš ho smazat. Nepůjde to, dokud adobe neukončíš.

Re: Ovládáme (nejen) windows pomocí visual basic script 1. díl

Napsal: 03 čer 2021 00:55
od Fox_25
Ano, samozřejmě, soubory "zamčené" aplikací nebo os mazat nejdou, nicméně zkopírovat ano. "Prorotování" složek ani ne(krom hobo, ten nezamyká), prostě smazání staré zálohy, přesunutí aktuální zálohy na pozici staré a kopírování do zálohy.

Re: Ovládáme (nejen) windows pomocí visual basic script 1. díl

Napsal: 08 čer 2021 15:22
od atari
Můžeš prosím do těch dílů vkládat odkazy na jednotlivé díly? Děkuji

Re: Ovládáme (nejen) windows pomocí visual basic script 1. díl

Napsal: 09 čer 2021 08:18
od ITCrowd
Ahoj, díky za připomínku, budu doplňovat vždy na konci úvodního příspěvku.

Re: Ovládáme (nejen) windows pomocí visual basic script 1. díl

Napsal: 17 čer 2021 11:03
od Ltb
Skvela zprava a drzim palce, at jde psani dalsich dilu hezky od ruky, diky moc! :bigups:

Re: Ovládáme (nejen) windows pomocí visual basic script 1. díl

Napsal: 17 čer 2021 20:46
od Prophet
Pamatuju doby kdy jsem si takhle střílel z kamarádů. Že jsem udělal tabulku třeba "máte virus" atd. :D