Podívejme se do listopadu roku 1993, kdy jsem začal tvořit zajímavý prográmek, který řešil jednu pomocnou záležitost při práci se soubory. V té době jsem pracoval ve Volkov Commanderu. A při klepnutí na soubor, který se dal zpracovat několika způsoby mi právě tato možnost chyběla. Proto jsem se rozhodl napsat cosi, co by tenhle problém vyřešilo. Program měl být podobný tomu, co nabízely Norton Utility pod názvem BE.EXE, tedy Batch Enhancer. A tak jsem začal programovat. První verze vlastně pracovala pouze pomocí klávesnice, do druhé jsem zapojil i myš, což BE.EXE neměl.
Myš jsem přidal především z lenosti. Když jsem myší dvakrát klikl na daný soubor a menu se otevřelo, už jsem nechtěl ruku z myši sundávat a šmátrat po klávesnici. Ta myš se nastavila na slovo Volba, kterým se MENU2A ohlásil a čekal na vstup. Pak už stačil jen minimální pohyb nahoru. Vybrat volbu a stisknout levé tlačítko. Takhle si představuju user friendly aplikaci.
Teď už budu popisovat jen tu druhou verzi, tedy program pod názvem MENU2A.EXE. Program nemohl fungovat sám o sobě, musel být součástí dávkového souboru (BAT). Uvedu modelový příklad. Jednalo se o například o soubor s příponou ZIP. Co jsem s ním mohl udělat? Bylo ho možné prohlédnout pomocí výpisu na obrazovce, pomocí speciálního prohlížeče nebo rozbalit. A když rozbalit, tak buď to aktuálního adresáře a nebo do speciálního, který právě na rozbalování sloužil. Čili se dalo vybrat ze čtyř úkonů. Pokud jsem tedy ve file manageru kliknul na soubor s příponou ZIP, ten aktivoval soubor BZIP.BAT ve kterém se spouštěl program MENU2A s jedním parametrem na vstupu. Ten parametr obsahoval řetězec čtyř znaků (každá pro jednu volbu), které byly následně použity k aktivaci jednotlivých úkonů. Program pouze čekal na stisk jedné z definovaných kláves nebo na klik myši ve správném řádku. První volba byla dostupná také stiskem klávesy Enter a ESC program ukončilo.
Fígl byl v tom, že program při stisku klávesy ukončil svojí činnost a vracel systémovou proměnnou ERRORLEVEL která odpovídala pořadí stisknuté klávesy ve vstupním řetězci. Podle této hodnoty dávka (BAT) předala řízení určenému programu. Výběr bylo možné provést i myší, kdy stačilo kliknout do řádku, kde se volba nacházela. Pokud jsem stiskl pravé tlačítko na myši, fungovalo jako ESC. Když byla stisknuta klávesa mimo seznam, program varovně pípl.
Nyní ještě svoje povídání rozšířím o tvorbu dávkových souborů, takzvaných baťáků. Tam jenom zmíním, že ten rámeček, ve kterém se nachází nabídka, tam má opodstatnění. Jednak to v rámečku lépe vypadá a navíc s ním už MENU2a počítá. Ten program ví, ve kterém řádku se výzva Volba> nachází. Na ten sám řádek nastaví kurzor myši, a už se ví, že ob jeden řádek se nachází poslední nabídka. A když vím toto, podle počtu položek si odpočívám i ty ostatní. Naprosto jednoduché, efektivní, rychlé.
Ten dávkový soubor se v podstatě vytvoří jen jednou a pak už se jen opravuje podle potřeb. Skládá se z několika částí. Návěští start, vlastní nabídka v rámečku, volání MENU2a, rozhodovací příkazy ERRORLEVEL, kterých je přesně tolik, kolik nabídek. Ale v opačném pořadí. No a ke každému rozhodovacímu bloku je sekce, která tuto volbu řeší. Každá sekce je pojmenovaná návěštím E1, E2, E3,... MENU2A provede rozdělení, baťák potom udělá potřebnou akci pro tu kterou větev. Akce se provede, dávka se ukončí a předá řízení file manageru nebo operačnímu systému. Více netřeba.
Program v první verzi obsahoval čtyřicet řádků kódu, když jsem do druhé verze přidal i ovládání myší a nápovědné okno, měl rovné dvě stovky řádků. EXE modul měl necelých 10 KB. Tenhle způsob ovládání mi v DOSu a Commanderu chyběl a tímto svým výtvorem jsem si usnadnil práci. Svým způsobem jsem si vytvořil kontextové menu, se kterým až za dva roky přišel systém Windows 95. Trochu jsem předběhl dobu a protože si stále hraji s DOS programy, tento program rozhodně není mrtvý, ale stále ho používám. A i když jsem vytvořil poměrně dost projektů a utilit, MENU2A byl ve své době nejpoužívanější. K tomu jsem dodělal i dva mini programy s názvem SDIR a GDIR. První program uložil aktuální adresář a druhý ho nastavil zpět. V dávkách a při různých pohybech sem a tam naprosto nezbytná funkce.
Komentáře