IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 5 - Práce se soubory a složkami 1/2

V předešlém cvičení, Řešené úlohy ke 4. lekci Batche, jsme si procvičili nabyté zkušenosti z předchozích lekcí.

V předchozím díle jsme se naučili, jak pracovat s podmínkami a jak větvit náš program. V tomto díle se podíváme na to, jak pracovat se soubory a složkami. Nejprve si řekneme něco o UAC, abychom se potom nedivili, proč nám ten zápis nefunguje :-).

Práva k zápisu v systémech Windows

Příkazový řádek a dávkové soubory Od Windows Vista existuje v systémech Windows tzv. UAC (User Account Control). Technologie zakazuje zápis na systémový oddíl disku (nejčastěji C:) v případě, že zápis není povolen administrátorem nebo že se nejedná o zápis do osobních složek uživatele. Toto opatření samozřejmě naplnilo diskuzní fóra o programování a rozbilo řadu aplikací. Důležité však je, že toto opatření je správné a pouze zabraňuje špatně napsaným aplikacím měnit co se jim zlíbí. Linuxové systémy mají podobná opatření již dlouhou dobu.

Koncepce systému Windows zahrnuje uživatelské účty. Každý uživatelský účet je realizován složkou (většinou C:\Users\jmeno_u­zivatele). Tato složka obsahuje mimo jiné dokumenty, pracovní plochu a také tzv. složku s daty aplikací - AppData. K této složce se lze dostat při zadání proměnné %appdata% do cesty. Zkuste si %appdata% napsat do cesty Průzkumníka a složku otevřít. Uvidíte, že ve složce má své podsložky mnoho aplikací, které máte nainstalovány. Právě zde je místo pro nastavení vašich aplikací a další data. Vaše aplikace si zde samozřejmě vytvoří složku se svým jménem a do té si bude vše ukládat. Složka %appdata% míří vždy k AppData aktuálně přihlášeného uživatele.

Velkou chybou bylo, že si programy ukládaly data do složky s programem. Program na ploše nebo na starých Windows fungoval, nicméně když se poté nainstaloval do složky Program Files na disku C, spadl s chybou při zápisu na disk. Problém lze samozřejmě obejít tím, že aplikaci spustíme jako správce, ale to je špatné řešení.

Příprava složky

Když už víme, co je to složka AppData, můžeme si v ní vytvořit nějakou složku pro náš prográmek. Jak bylo zmíněno u UAC, cesta ke složce AppData je uložená v systémové proměnné %appdata% (více v 3. lekci). To je ale nepraktické, protože pokaždé budeme muset dopisovat název naší složky za tuto proměnnou. Proto si vytvoříme další proměnnou, do které si uložíme cestu do AppData a do naší složky.

set cestaAppdata=%appdata%\ITnetworkBatch

Nyní máme celou cestu v proměnné %cestaAppdata% a můžeme se vrhnout na vytváření složky.

Existence složky

Na začátku našeho programu by bylo dobré zjistit, zda složka již existuje - abychom ji nevytvářeli dvakrát. Zjišťování, zda soubor nebo složka existuje se provádí pomocí nám již známého příkazu:

if

Jen s tím rozdílem, že za něj nebudeme psát proměnnou ale klíčové slovo EXIST a název složky/souboru. Příkaz tedy bude vypadat takto:

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

V našem případě ale potřebujeme provést akci pokud složka neexistuje (vytvořit ji), proto za IF doplníme klíčové slovo NOT:

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

V našem případě tedy příkaz bude vypadat následovně:

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

Vytváření složky

Vytváření složky se v Batchi provádí pomocí příkazu MKDIR, případně pomocí jeho zkrácené verze MD.

mkdir <cesta ke složce>

Upravíme si proto náš příkaz IF, aby nám vytvořil složku:

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

Pokud se pak podíváme do AppData, zjistíme, že tam máme novou složku.

Změna aktuální složky

Pokud budeme pracovat v naší aplikaci pracovat pouze se složkou AppData, budeme pořád muset psát naši proměnnou do cesty. Tomuto se můžeme vyhnout změnou aktuální složky. Ta se provádí pomocí příkazu CHDIR, případně pomocí jeho zkrácené verze CD. Pokud spustíme příkaz:

cd %cestaAppdata%

Změní se aktuální složka na naši složku v AppData a můžeme s ní pracovat přímo. Například pokud teď vytvoříme další složku, nevytvoří se ve složce s programem ale v naší složce v AppData.

Přejmenování složky

Přejmenování složky nebo souboru se provádí pomocí příkazu REN. Nezapomeňte zadat příponu.

ren puvodni_nazev novy_nazev

Smazání složky

Mazání složky se provádí pomocí příkazu RMDIR, případně pomocí jeho zkrácené verze RD.

rmdir nazev_slozky

Zde ale můžeme narazit na problém. Pokud chceme adresář smazat, musí být prázdný. Pokud není, vyhodí hlášení “Adresář není prázdný”.

K této akci slouží přepínač /S, který vynutí smazání složky včetně všech podsložek a souborů které obsahuje.

rmdir nazev_slozky /S

Pokud si tento příkaz spustíte, zjistíte, že se nás příkaz ptá, zda složku opravdu chceme smazat. To může být v dávkových souborech nepříjemné. Od toho tu je přepínač /Q, který se nebude ptát a složku rovnou smaže.

rmdir nazev_slozky /Q

Tyto přepínače můžeme také kombinovat.

rmdir nazev_slozky /Q /S

Mimochodem, složku Windows se Vám smazat nepovede, nezapomínejte na UAC :-).

Výpis stromové struktury a obsahu složky

Obsah složky můžeme vypsat pomocí příkazu DIR:

dir slozka

nebo

dir

pro výpis obsahu aktuální složky.

Příkazový řádek a dávkové soubory

Stromovou strukturu “vykreslíme” pomocí příkazu:

tree slozka

nebo

tree

pro výpis aktuální složky.

Příkazový řádek a dávkové soubory

V dalším díle se podíváme na práci s textovými soubory.


 

Předchozí článek
Řešené úlohy ke 4. lekci Batche
Všechny články v sekci
Příkazový řádek a dávkové soubory
Článek pro vás napsal Neaktivní uživatel
Avatar
Uživatelské hodnocení:
98 hlasů
Tento uživatelský účet již není aktivní na základě žádosti jeho majitele.
Aktivity