Skript slouží k automatizaci často opakovaného sledu akcí. Vytvořením dávky složené z několika postupných kroků zjednodušuje provádění složitějších činností a automatizuje je třeba až na jedno jediné kliknutí myši.
The script used to automate frequently repeated sequence of events. By creating a batch composed of several successive steps streamlines and automates complex operations should be up to a single mouse click.
Pokud se Vám doplněk líbí, kliknutím na tlačítko Donate můžete přispět na jeho vývoj.
Nekamarádíte se s PayPalem? Napište mi email a domluvíme se na jiném způsobu, třeba převodu na účet.
|
|
Instalaci doplňku spustíte kliknutím na tlačítko vlevo. Následně budete v prostředí GeoGetu provedeni instalačním procesem. Pro zajištění této funkce je třeba mít na počítači již
nainstalovaný a
spuštěný program GeoGet
.
|
Diskuze o tomto skriptu je na Geocaching.cz.
Skript umožňuje automatizovat opakované provádění neměnné řady akcí a úkonů v GeoGetu (skupin událostí, dávky). Zároveň je nástrojem k definování, údržbě a spouštění těchto dávek. Každou dávku může tvořit jedna samostatná akce nebo jejich sled.
Z každé dávky lze:
Počet dávek a počet akcí v dávce je neomezený. Správně sestavené dávky je možné snadno vyměňovat mezi uživateli. Takové dávky by neměly obsahovat absolutní cesty a nic, co by mohlo být závislé na konkrétním PC nebo instalaci GeoGetu.
Vzhledem k možnostem skriptu může být Combine také chápáno jako nástroj na strojové generování jiných jednoduchých skriptů.
Funkce jsou rozdělené na operace s dávkou jako celkem a operace s jednotlivými příkazy v dávce.
Pro přehlednost obsahuje každá dávka v seznamu i ikonu, kterou má na toolbaru. V seznamu zobrazených dávek je s každou z nich provádět následující operace:
*.ggf*.ggt*.bat*.exeKurzivou napsané operace sice zdánlivě spadají do operací s dávkou jako celkem, ale tyto informace jsou uložené v INI souboru s jednotlivými příkazy a jsou v podstatě modifikováním dávky.
Combine umožňuje pro každou skupinu vytvořit skript, ten uložit do Správce pluginů a případně i jeho ikonu umístit na toolbar. Všechny dávky uložené pro použití ve správci jsou ve skupině Combine 2 (společně s vlastním pluginem Combine).
Vymazání ikony z toolbaru lze udělat opět ve správci pluginů. K vymazání dávky
i ze správce skriptů stačí vymazat příslušný soubor ggp.pas z adresáře Combine2\Batches. Pokud použijete v Combine funkci Z toolbaru, dávku odstraníte jak z toolbaru, tak i ze správce pluginů - funkce vymaže soubor s vytvořeným ggp makrem.
Ve verzi 2 je zcela přepracován způsob uložení příkazů dávek. Každá dávka má své příkazy uložené v samostatném INI souboru. Tím se značně zjednodušila a zpřehlednila jejich správa a jako bonus přibyla možnost předávat své dávky jiným uživatelům a snad se tak podělit o plody své práce (některé dávky mohou obsahovat třeba 20 i více příkazů a vymýšlet to může být nad něčí síly).
Všechny INI soubory dávek (podobně jako dávky připravené pro toolbar) jsou uloženy v adresáři Combine2\Batches.
(V hlavním adresáři pluginu je ještě INI soubor obsahující seznam možných příkazů a jejich parametry a INI soubor s konfigurací barev pro zobrazení jednotlivých příkazů v dávce. Zejména prvního z nich si doporučuji nevšímat!)
Pokud by to snad někoho zajímalo, tak každý z příkazů dávky je v INI souboru na jediném řádku. Slovo před = udává typ příkazu a první znak za ním může indikovat podmíněné zpracování.
Některé typy příkazů mohou obsahovat parametry. V tom případě slouží znak | jako oddělovač parametrů od příkazu a případně i parametrů od sebe navzájem.
Při vložení skriptu spouštějícího definovanou dávku na toolbar je implicitně použita interní ikona. Protože asi není vhodné mít v toolbaru třeba 5 stejných ikon s tím, že každá dělá něco jiného, je možné tuto standardní ikonu nahradit svou vlastní. Ikona je nedílnou součástí dávky a je ve formátu Base64 uložena v INI souboru dávky.
Ikona je běžný BMP obrázek velikosti 16 x 16 bodů, který používá max. 256 barev. Takovýto obrázek lze vytvořit v programu Malování (součástí instalace Windows) a uložením “jako obrázek se 256 barvami”. Barva bodu v levém spodním rohu je považována za průhlednou.
Proměnné lze použít kdekoli v jakékoli části příkazu nebo cesty. Před vlastním provedením příkazu dojde k náhradě za odpovídající hodnoty.
Skript umožňuje definovat a používat uživatelské proměnné pomocí samostatné skupiny příkazů. V souladu s Pascalem jako programovacím jazykem použitým pro skripty, jsou jména proměnných nezávislá na velikosti písmen. Předdefinovaná proměnná DBName obsahuje vždy jméno právě používané databáze.
Při definici proměnné (naplnění hodnoty) je v příkazech vždy použito jen její jméno. Tam, kde mu být použita hodnota proměnné, je třeba jméno obalit procenty %jmeno%.
Obecně jsou hodnoty proměnných ukládány a zpracovávány jako texty, ale při testování je možné předepsat jejich převod na číslo a testovat hodnotu jako číslo. Pokud dojde při převodu z textu k chybě (nečíselný znak), výsledkem bude vždy hodnota 0.
Kromě nastavování hodnot proměnných uživatelem je možné pracovat i s výsledkem poslední provedené akce ve skupině. Každá prováděná akce má výsledek 1 nebo 0 v závislosti na jejím úspěšném provedení a pomocí příkazu VarRet lze tuto hodnotu uložit do uživatelské proměnné.
Všude, kde je možné použít uživatelskou proměnnou, je také možné použít systémovou proměnnou prostředí (%USERNAME%, %WINDIR%, %APPDATA% a podobně). Před vlastním vykonáním příkazu dojde ke správné expanzi.
Pořadí nahrazování je (umím si představit situace, kdy je třeba to při tvorbě dávky zohlednit):
Combine od verze 1.1.7. podporuje podmíněné provádění příkazů. Podmíněně lze provádět i několik příkazů. Protože každý příkaz si s sebou nese informaci o provedeni při platnosti nebo neplatnosti testu, je možné příkazy libovolně promíchávat a přesto si zachovají svou původní funkčnost. Dvojklik na kterémkoli příkaze dávky zobrazí se dialog, v kterém můžete upřesnit parametry i podmíněnost provádění.
Použití podmínek se asi nebude příliš líbit programátorům, ale já to dělal hlavně pro neprogramující uživatele a pro ně se mi zdá, že takto je to srozumitelnější než běžné programátorské konstrukce.
Při testech je možné používat uživatelské proměnné nebo textové či číselné hodnoty. Jména proměnných se od hodnot odlišují tím, že jména proměnných, která mají být pro vyhodnocení nahrazena hodnotou proměnné, jsou vždy ve tvaru %jmeno%. V opačném případě je text chápán jako string. Pokud jste zvyklí, můžete texty uzavřít do uvozovek, ale není to nutné. Ovšem pokud uvozovky použijete, musíte je použít na obou stranách porovnání.
Obecný postup podmíněného provádění je takovýto:
Protože výsledek testu platí pro všechny příkazy až do dalšího testu, mohou být za sebou v libovolném pořadí příkazy podmíněné i nepodmíněné. Pořadí provádění je dáno pořadím v dávce a pak případně výsledkem testu.
Příklad používající podmíněné zpracování vypíše informaci o tom, zda je použita
implicitní databáze jménem geoget. Zapsaný v INI souboru dávky by mohl vypadat následovně:
CMD=VarTest|"%DBName%"|"geoget"|=|Str CMD=+ShowMsg|Právě je používána databáze GEOGET CMD=-ShowMsg|Databáze GEOGET není aktuální databází
Druhý příklad ukáže výpis nalezených keší z databáze geoget. Pokud není
požadovaná databáze aktivní, přepne na ni a pak aplikuje filtr pro zobrazení
nalezených keší.
CMD=VarTest|"%DBName%"|"geoget"|=|Str CMD=-DBSelect|geoget GGF_SET=Found.ggf
Třetí příklad zobrazí zprávu o možném ukončení dávky a případně ji ukončí. Jsou dvě možnosti testování - jako string:
CMD=VarGetYesNo|STOP|Ukončit zpracování dávky? CMD=VarTest|"%STOP%"|"1"|=|Str CMD=+Stop
… jako číslo
CMD=VarGetYesNo|STOP|Ukončit zpracování dávky? CMD=VarTest|%STOP%|1|=|Int CMD=+Stop
Trochu složitější příklad bude exportovat keše, podle odpovědí na dotaz. Exportujme tedy do GPS nenalezené keše nebo nenalezené i nalezené. A abychom si ukázali víc podmíněných příkazů za sebou, tak ještě v každém případě se bude exportovaný soubor jmenovat jinak. A ještě poznamenám, že je jedno v jakém pořadí budou poslední 2 příkazy.
CMD=Default.ggf CMD=VarGetYesNo|Nalezene|Exportovat i nalezené keše? CMD=VarTest|%Nalezene%|1|=|Int GGF_SET=+Found.ggf GGE=-garmin.gge.pas|BezNalezenych.gpx GGE=+garmin.gge.pas|SNalezenymi.gpx
Kromě níže uvedených příkladů je možné se inspirovat také již vytvořenými dávkami, které jiní uživatelé nabídli pro volné použití.
Práci s Registry si ukážeme na fragmentu dávky, která spouští program POI Loader. Ten se chová poněkud nepříjemně v tom, že požaduje interakci s uživatelem nebo, pokud pracuje v silent režimu, nelze mu zase předepsat adresář s daty a použije ten, s kterým pracoval naposledy. Po troše zkoumání snadno zjistíme, že informace o posledním spuštění má program uložené v registrech, takže vhodným nastavením jej vlastně můžeme přinutit ke požadované činnosti. Dáme si tedy následující úkoly:
CMT=Získání cesty k POIloaderu CMT=.....Na Win7 CMD=GetRegistryVal|HKLM\SOFTWARE\Wow6432Node\Garmin\Applications\POI Loader:InstallDir|PRG CMD=VarTest|"%PRG%"|""|=|Str CMT=.....Na 32 bitových Win, pokud předchozí příkaz neuspěl CMD=+GetRegistryVal|HKLM\SOFTWARE\Garmin\Applications\POI Loader:InstallDir|PRG CMD=VarTest|"%PRG%"|""|=|Str CMD=+ShowMsg|Nepodařilo se najít instalovaný POI Loader.\nPřerušíme zpracovaní CMD=+Stop CMT=Nastavení zdrojové cesty pro načítání dat POI Loaderem CMD=SetRegistryVal|HKCU\Software\Garmin\POILoader\Settings:Directory|string:%GG_DATADIR%\POI CMT=Spuštěni POI Loaderu v silent režimu se zápisem do adresáře GPS (připojena jako g:) EXE=%PRG%|/s /d g:\Garmin\POI
Mějme takovou běžnou úlohu: Chci aktualizovat keše v okolí mého bydliště a mé
chaty a exportovat je do gps. Z demonstrativních důvodů budu předpokládat, že mě
nezajímají eventy, pro které mám vytvořený filtr Eventy.ggf. Předpokládám, že
pro obě lokality je vytvořený filtr pro načtení seznamu keší (řekněme doma.ggf
a chata.ggf). Spustím tedy skript Combine 2
ref10.ggf - automaticky je nastaveno přidávání do seznamuEventy.ggf. Protože mě ovšem tyto keše nezajímají, změním tomuto filtru způsob aplikace na “Odebírá”. Tím by byl určen seznam keší.geojarry-listing.ggp.pas.gpxpq.ggp.pas s parametrem ”%GG_DATADIR%\DomaChata.gpx” (uvozovky jsou důležité, protože cesta může obsahovat mezery)cmd.exe s parametry /C ”%GG_DATADIR%\DomaChata.gpx” E:\Garmin\GPX\DomaChata.gpx (předpokládám, že připojená PGS je vidět jako jednotka E:)Hotovo. Od této chvíle mi stačí jediné kliknutí na to, abych dostal do GPS aktualizované keše z míst, kde se nejčastěji vyskytuji.
Poznámka:
Kopírování vytvořeného exportního souboru pomocí programu cmd.exe je zde uvedeno víceméně pro demonstraci. Rozumnější by bylo jako parametr pro export uvést přímo cílový soubor v souborovém systému GPS (tedy řekněme ono E:\Garmin\GPX\DomaChata.gpx).
Chtěl bych si zobrazit a do GPS exportovat všechny Pražské kešky zařazené do skupiny Významné stromy, které nemám dosud nalezené.
VyznamneStromy.ggt. Ten získám tak, že vezmu jen první sloupec keší zobrazených na této stránce a uložím jej do souboru.VyznamneStromy.ggt a odečtení filtru KeseMimoPrahu.ggfgpxpq.gpp.pas s parametrem E:\Garmin\GPX\VyznameStromyPraha.gpx (předpokládám, že připojená GPS je vidět jako jednotka E:)(Jinou možností pro bod 1 a 3 je pomocí GeoJarry označit všechny keše série Významné stromy a vytvořit si filtr, který použije Tag kategorie Bookmark s příslušnou hodnotou.)
Do GPS chci nahrát keše v okolí domova a chaty tak, jak je definováno v 1. příkladu a pak všechny ostatní keše jako POI body.
All.ggf a nastavím mu '='ref10.ggfref10.ggfpoigpx.gge.pas (autorem Medwyn_cz)POILoader.exe (případně mohu doplnit parametr '/silent', který způsobí, že program se nebude na nic ptát a bude pracovat přesně ve stejném režimu jako při posledním spuštění - viz manuál k programu)Jediná konfigurace mimo prostředí pluginu, která má podle mě nějaké opodstatnění, je úprava v souboru Combine.Colors.ini, který obsahuje barvu a řez fontu, kterým bude zobrazen příslušný typ příkazu v seznamu příkazů dávky.
Vedlejším efektem změny uložení příkazů dávky do samostatného INI souboru je možnost předat ji ostatním uživatelům k použití. Autor dávky by měl pro ni vytvořit standardní gip soubor, do něhož uloží INI soubor a také všechny soubory, na kterých dávka závisí. Pochopitelně není třeba vkládat soubory, které jsou standardní. Naopak je možné doplnit třeba závislost na jiném gip balíčku, který bude, v případě potřeby, automaticky nainstalován (typicky by měla být uvedena závislost na Combine
).
Během automatické instalace Combine verze 2 se plugin pokusí vyhledat dávky vytvořené starou verzí a převést je do formátu, kterému bude rozumět verze nová. Převod se netýká dávek uložených na toolbar, převedené dávky se na toolbaru ani ve správci pluginů automaticky neobjeví.
Předpokládám, že budou převedeny všechny dávky správně, ale jsem jenom člověk a co vím, co si kdo vymyslel a kde já udělal chybu. Proto se nová verze instaluje do jiného adresáře a původní verzi nechává na disku. To může ale způsobit i problémy. Pokud bude později aktualizována verze 2 a nebude starší verze 1 z disku odinstalována, aktualizace se pokusí opět převádět staré dávky a tím případně přepsat úpravy provedené později na již převedených dávkách. Uff, to je odstavec. Ale snad jste pochopili: pro prověření funkčnosti dávek v nové verzi je vhodné starou verzi Combine odinstalovat.
2.0.0 chybně převádí příkaz VarTest. Pokud test obsahuje text, ve staré verzi je uzavřen v uvozovkách (text bez uvozovek je považován za jméno proměnné). V nové verzi uvozovky být nemají (jméno proměnné je uzavřeno mezi znak %), ale při konverzi uvozovky odstraněny nejsou.
\n pro zalomení řádkuZpůsob, jakým jsou dávky uloženy, je předurčuje ke snadné výměně mezi uživateli. Správně sestavenou dávku může použít kterýkoli uživatel a bude pracovat stejně jako u uživatele, který ji vytvořil. Takové dávky by neměly obsahovat absolutní cesty a nic, co by mohlo být závislé na konkrétním PC nebo instalaci GeoGetu. Absolutní cesty lze nahradit systémovými proměnnými prostředí nebo proměněnými GeoGetu.
*.gip soubor uložit na svůj disk a nainstalovat ručně přes menu Pluginy/Správce pluginů/Nainstalovat balíček.
Autor: Medwyn_cz, mikrom
Dávka (1.32 KiB, 35 downloads) přidá do seznamu keší všechny keše, v jejichž listingu (pole long description) se vyskytuje zadaný text. Zadaný text může obsahovat i zástupné znaky % (libovolný počet libovolných znaků) nebo _ (libovolný znak).
Vyhledávání je nezávislé na velikosti písmen. S ohledem na zjednodušení a rychlost však nejsou zanedbány znaky s diakritikou a navíc u nich není aplikována nezávislost na velikosti písmen.
Autor: Mikrom
Dávka (1.16 KiB, 37 downloads) přidá do seznamu keší všechny keše, v jejichž poznámce (pole comment) se vyskytuje zadaný text. Zadaný text může obsahovat i zástupné znaky % (libovolný počet libovolných znaků) nebo _ (libovolný znak).
Autor: Gord
Dávka (1.35 KiB, 10 downloads) přidá do seznamu keší všechny keše, u kterých má zadaný kačer log a tento log obsahuje zadaný text. Nick je vyhledáván podle přesného zadání, hledaný text může obsahovat i zástupné znaky % (libovolný počet libovolných znaků) nebo _ (libovolný znak), přičemž je vždy automaticky uzavřen mezi %…%.
Autor: Gord
Dávka je funkčně jednodušší sestřičkou Autostatu a naopak je funkčně rozšířenou verzí spouštěcího scriptu instalovaného s GgStatem. Dávka nic nekontroluje, jen:
Dávku lze pochopitelně doplnit o jakoukoli jinou činnost, kterou uživatel považuje při generování statistiky za důležitou (např. spustit script Elevation, …).
První alternativa (2.12 KiB, 91 downloads) generuje statistiku vždy pro téhož uživatele.
Druhá alternativa (2.27 KiB, 65 downloads) slouží k témuž účelu, ale při přepínání profilů.
Autor: Gord (inspirace Medwyn)
Pří aktualizaci dat Geogetu dochází ke značnému zpomalení v případě, že je Dropbox aktivní. Proto je vhodné činnost Dropboxu během intenzivní práce s databází pozastavit. Součástí instalace jsou dvě dávky, jedna po vypnutí a druhá pro zanputí Dropboxu (
nejedná se o pozastavení, ale o úplné vypnutí Dropboxu).
Zapnutí a vypnutí Dropboxu (2.19 KiB, 48 downloads)
| Filename | Last modified |
|---|---|
| logfulltext_1.0.0.gip (1.35 KiB, 10 downloads) | 2012/02/18 20:39 |
| listingfulltext_1.0.1.gip (1.32 KiB, 35 downloads) | 2012/01/09 15:51 |
| notefulltext_1.0.0.gip (1.16 KiB, 37 downloads) | 2012/01/09 15:51 |
| combine-2.0.3.10.gip (63.31 KiB, 2837 downloads) | 2011/11/23 11:19 |
| dropbox-1.0.2.gip (2.19 KiB, 48 downloads) | 2011/10/26 12:32 |
| generovanistatistikyvggprofilu_1.0.0.gip (2.27 KiB, 65 downloads) | 2011/09/28 08:01 |
| generovanistatistiky_1.0.1.gip (2.12 KiB, 91 downloads) | 2011/09/02 22:22 |
RunInfo doplněn o možnost přerušení dávky; k přerušení dojde až po dokončení právě probíhající operace (načitání filtru, ukončení vnitřně spuštěného scriptu, uzavření již otevřeného modálního formuláře, …)FileExists je možné rovnou provádět podmíněný přikaz v závislosti na výsledku; již není třeba výsledek uložit do proměnné a její hodnotu testovatTextToFile) dojde k nahrazení promenných %jmeno%ApiGgtLogs a ApiGetLogs měly jako oddělovač v prvním parametru středník, což je nejednotné s otatními příkazy Combine - oddělovač změněn na dvojtečku, z důvodu kompatibility je teď tedy možno používat oboje (preferuji dvojtečku)SQLToVar provede zadaný přikaz SQL (můze být zadaný i jménem souboru) a výsledek načte do proměnné (každá první vrácená hodnota na samostatném řádku, např. SELECT DISTINCT cachesize FROM geocache vrátí seznam velikosti keší v databáziVarExpr pro uložení výsledku matematického výrazu do proměnné. Výraz může obsahovat jiné proměnné (uzavřené v %..%), závorky, bězné matematické operace a také funkce SQLite, které mají v daném kontextu smyslBrowseUrlGC.live, zatím načtení logů keší, aktualizace stavu keší a aktualizace keší. Keše je možné zadat výčtem, ggt souborem nebo příkazy mohou pracovat se seznamem zobrazených kešíShowRunInfo, zadávají se samostatně X a Y souřadnice, záporně jsou hodnoty zprava resp. zdola (pro jednoduchost se předpokládá, že hlavní panel je jednořádkový a dole)GG_CACHER (nick vyplněný pro gc.com v nastavení GG)CRLF jako odřádkování v textuGS_USERNAME, GS_PASSDORD (načítané ze souboru groundspeak.config.pas, pokud existuje, je možné je přepsat a tak použít i jiného uživatele než standardně používá GG či GJ)TextToFileFileExistsFileToGsProfileVarTestDefined
Zobrazit změny ve starších verzích
Skrýt změny ve starších verzích
SQLFileAdd pro zpracování SQL příkazu uloženého v souboruFtpGetFile a FtpPutFile pro přístup k FTP serveru (v pasivním režimu)Debug umožňuje krokovat jen v části dávkyZměny grafického prostředí