Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

5. diel - Práca so súbormi a priečinkami 1/2

V predchádzajúcom cvičení, Cvičenie k 4. lekcii Batch, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.

V predchádzajúcom diele sme sa naučili, ako pracovať s podmienkami a ako vetviť náš program. V tomto diele sa pozrieme na to, ako pracovať so súbormi a zložkami. Najprv si povieme niečo o UAC, aby sme sa potom nečudovali, prečo nám ten zápis nefunguje :-) .

Práva na zápis v systémoch Windows

Príkazový riadok a dávkové súbory
Od Windows Vista existuje v systémoch Windows tzv. UAC (User Account Control). Technológia zakazuje zápis na systémovej oblasti disku (najčastejšie C :) v prípade, že zápis nie je povolený administrátorom alebo že sa nejedná o zápis do osobných priečinkov používateľa. Toto opatrenie samozrejme naplnilo diskusné fóra o programovaní a rozbilo rad aplikácií. Dôležité však je, že toto opatrenie je správne a iba zabraňuje zle napísaným aplikáciám meniť čo sa im zapáči. Linuxové systémy majú podobné opatrenia už dlhú dobu.

Koncepcia systému Windows zahŕňa používateľské kontá. Každý užívateľský účet je realizovaný zložkou (väčšinou C: \ Users \ ID užívateľa). Táto zložka obsahuje okrem iného dokumenty pracovnú plochu a tiež tzv. Zložku s dátami aplikácií - AppData. K tejto zložke sa možno dostať pri zadaní premennej% appdata% do cesty. Skúste si% appdata% napísať do cesty Prieskumníka a zložku otvoriť. Uvidíte, že v zložke má svoje podpriečinky mnoho aplikácií, ktoré máte nainštalované. Práve tu je miesto pre nastavenie vašich aplikácií a ďalšie dáta. Vaše aplikácie si tu samozrejme vytvorí zložku so svojim menom a do tej si bude všetko ukladať. Zložka% appdata% mieri vždy k AppData aktuálne prihláseného používateľa.

Veľkou chybou bolo, že si programy ukladali dáta do zložky s programom. Program na ploche alebo na starých Windows fungoval, však keď sa potom nainštaloval do priečinka Program Files na disku C, spadol s chybou pri zápise na disk. Problém možno samozrejme obísť tým, že aplikáciu spustíme ako správca, ale to je zlé riešenie.

Príprava zložky

Keď už vieme, čo je to zložka AppData, môžeme si v nej vytvoriť nejakú zložku pre náš programík. Ako bolo spomenuté u UAC, cesta k priečinku AppData je uložená v systémovej premennej% appdata% ( viac v 3. lekcii). To je ale nepraktické, pretože zakaždým budeme musieť dopisovať názov našej zložky tento ukazovateľ. Preto si vytvoríme ďalšiu premennú, do ktorej si uložíme cestu do AppData a do našej zložky.

set cestaAppdata=%appdata%\ITnetworkBatch

Teraz máme celú cestu v premennej% cestaAppdata% a môžeme sa vrhnúť na vytváraní zložky.

Existencie zložky

Na začiatku nášho programu by bolo dobré zistiť, či zložka už existuje - aby sme ju nevytvárali dvakrát. Zisťovanie, či súbor alebo priečinok existuje sa vykonáva pomocou nám už známeho príkazu:

if

Len s tým rozdielom, že zaň nebudeme písať premennú ale kľúčové slovo EXIST a názov priečinka / súboru. Príkaz teda bude vyzerať takto:

if exist <složka> <akce> else <akce>

V našom prípade však potrebujeme vykonať akciu ak priečinok neexistuje (vytvoriť ju), preto za IF doplníme kľúčové slovo NOT:

if not exist <složka> <akce> else <akce>

V našom prípade teda príkaz bude vyzerať nasledovne:

if not exist %cestaAppdata% (<vytvoření složky>)

Vytváraní priečinka

Vytváranie zložky sa v Batch vykonáva pomocou príkazu MKDIR, prípadne pomocou jeho skrátenej verzie MD.

mkdir <cesta ke složce>

Upravíme si preto náš príkaz IF, aby nám vytvoril zložku:

if not exist %cestaAppdata% (mkdir %cestaAppdata%)

Ak sa potom pozrieme do AppData, zistíme, že tam máme novú zložku.

Zmena aktuálnej zložky

Ak budeme pracovať v našej aplikácii pracovať len so zložkou AppData, budeme stále musieť písať našu premennú do cesty. Tomuto sa môžeme vyhnúť zmenou aktuálnej zložky. Tá sa vykonáva pomocou príkazu CHDIR, prípadne pomocou jeho skrátenej verzie CD. Ak spustíme príkaz:

cd %cestaAppdata%

Zmení sa aktuálny priečinok na našu zložku v AppData a môžeme s ňou pracovať priamo. Napríklad, ak teraz vytvoríme ďalšiu zložku, nevytvorí sa v zložke s programom ale v našej zložke v AppData.

Premenovanie zložky

Premenovanie priečinka alebo súboru sa vykonáva pomocou príkazu REN. Nezabudnite zadať príponu.

ren puvodni_nazev novy_nazev

Zmazanie zložky

Mazanie zložky sa vykonáva pomocou príkazu RMDIR, prípadne pomocou jeho skrátenej verzie RD.

rmdir nazev_slozky

Tu ale môžeme naraziť na problém. Ak chceme adresár zmazať, musí byť prázdny. Ak nie je, vyhodí hlásenie "Adresár nie je prázdny".

K tejto akcii slúži prepínač / S, ktorý vynúti zmazanie zložky vrátane všetkých podpriečinkov a súborov ktoré obsahuje.

rmdir nazev_slozky /S

Ak si tento príkaz spustíte, zistíte, že sa nás príkaz pýta, či zložku naozaj chceme zmazať. To môže byť v dávkových súboroch nepríjemné. Od toho tu je prepínač / Q, ktorý sa nebude pýtať a zložku rovno zmaže.

rmdir nazev_slozky /Q

Tieto prepínače môžeme tiež kombinovať.

rmdir nazev_slozky /Q /S

Mimochodom, zložku Windows sa Vám zmazať nepodarí, nezabúdajte na UAC :-) .

Výpis stromovej štruktúry a obsahu zložky

Obsah priečinka môžeme vypísať pomocou príkazu DIR:

dir slozka

alebo

dir

pre výpis obsahu aktuálnej zložky.

Príkazový riadok a dávkové súbory

Stromovú štruktúru "vykreslíme" pomocou príkazu:

tree slozka

alebo

tree

pre výpis aktuálnej zložky.

Príkazový riadok a dávkové súbory

V ďalšom diele sa pozrieme na prácu s textovými súbormi.


 

Predchádzajúci článok
Cvičenie k 4. lekcii Batch
Všetky články v sekcii
Príkazový riadok a dávkové súbory
Článok pre vás napísal Neaktivní uživatel
Avatar
Užívateľské hodnotenie:
1 hlasov
Tento uživatelský účet již není aktivní na základě žádosti jeho majitele.
Aktivity