O možnostech a výhodách skriptování na *nixových operačních systémech nikdo nepochybuje, vše je dobře zdokumentované, na internetu lze najít spoustu návodu, hodně uživatelů vám s tímto poradí. Zcela opačná je situace ve Windows. O možnostech skriptování na této platformě lze velmi obtížně najít jakékoliv informace, dokumentace prakticky neexistuje, málo kdo to umí.
Skripty pod Windows mají koncovku .cmd, vytvoříme tedy soubor skript.cmd (nejlépe v notepadu) a uložíme jej. Začít jinak než „Hello World“ prostě nejde. Do skriptu napíšeme (nečekaně)
echo Hello World
uložíme a spustíme příkazem skript.cmd. Dostaneme něco jako toto:
echo Hello World
Hello World
Vidíme, že se nejdříve vypsal příkaz a až potom se provedl. Tomu zabráníme přidáním
@echo off
na začátek skriptu.
Příkaz končí koncem řádku, za echo tedy můžeme vložit libovolný text, složených z jakýchkoliv znaků včetně mezer, který se vleze na 1 řádek.
Proměnou deklarujeme jednoduše
set promena=hello world (opět vše až do konce řádku bude obsahem proměnné)
Pro názvy proměnných platí několik podmínek:
1) název může obsahovat alfabetické znaky, čísla a podtržítko
2) prvním znakem nesmí být číslo
3) nesmí se použít klíčová slova jako for, if atp.
4) na velikosti písmen nezáleží
Proměnou vypíšeme tím, že jí „obalíme“ do %
echo %promena%
Jelikož jakýkoliv příkaz je ukončen koncem řádku, není problém vypsat více proměnných najednou
echo %promena1% %promena2% %promena3%
Taktéž není problém zkopírovat více proměnných do jedné
set promenaDohromady=%promena1% %promena2%
Existují také speciální proměnné %0, %1, %2, %3, …, %9. %0 uchovává název skriptu, %1 odkazuje na první argument příkazové řádky, %2 na druhý atp. Skriptem
echo %0
echo %1
vypíšeme název skriptu a první argument. Pokud bychom náhodou potřebovali více než 8 argumentů, musíme použít shift příkaz, který způsobí přesunutí %1 na %0, %2 na %1, … Jelikož nula se nemá kde přesunout, je „zapomenutá“. Vypsání 10 argumentu tedy dosáhneme takto:
shift
echo %9
Vypsání 11 takto:
shift
shift
echo %9
Tímhle můžeme pokračovat prakticky do nekonečna. Pro dnešek skončíme a příště se podíváme na řídící příkazy (if, for) a možná i něco navíc.
O tom, že systém souborů NTFS umožňuje přidělovat uživatelská práva ví poměrně hodně uživatelů. Méně ví o tom, že umožňuje šifrování a kompresi. Prakticky nikdo ale neví, že v nové verzi umožňuje také vytvářet pevné (hard) a symbolické (symbolic) odkazy (links). A pokud to někdo ví, většinou netuší jak. Na to se podíváme v tomto článku.
Prvním předpokladem je nainstalovaný systém Windows Vista (v XP to jde taky, ale jsou potřeba specializované programy). Druhým je znalost základu příkazové řádky systému Windows. Třetím je spuštění příkazové řádky jako správce (pravým tlačítkem -> spustit jako správce). Jelikož především u hard links může dojít při nesprávném použití ke ztrátě dat, doporučuji méně zkušeným uživatelům provádět hrátky na „testovacím“ adresáři.
Pro vytvoření symbolického linku na soubor C: \test2\text.txt v adresáři C:\test\ použijeme příkaz
mklink testLink ..\test2\text.txt – vřele doporučuji používat zpětné lomítka
- jako odpověď dostaneme toto:
Symbolický odkaz vytvořen pro testLink <<===>> ..\test2\text.txt
- příkazem dir vypíšeme obsah adresáře, který již obsahuje link.
V průzkumníku se link zobrazí stejně jako „zástupce“. Pokud chceme symbolický link na soubor smazat, použijeme příkaz
del testLink
Pokud chceme vytvořit symbolický link na adresář, pokžíjeme mklink /d (pozor na typ lomítka), např.
mklink /d naTest2 ..\test2
- v průzkumníku se link opět zobrazí jako „zástupce“, možností práce jsou ale podstatně vetší, můžeme si např. vypsat adresář ..\test2 příkazem dir naTest2 atp…
Pokud chceme symbolický link na adresář smazat, použijeme příkaz
rd naTest2
Pozor! Příkazem del naTest2 bychom vymazali obsah adresáře test2, nikoliv link!
Pro vytvoření hard linku použijeme příkaz mklink /h, např.
mklink /h ..\test2\text.txt
Na NTFS lze vytvářel hard linky pouze pro soubory na stejném oddílu.
Pokud chceme vytvořit "hard link" na adresář, vytváříme vlastně tzv. junction (junctions jsou dostupné od Win 2000)
mklink /j naTest2 ..\test2
U junction již nejsme omezení na stejný oddíl, v pohodě si můžeme připojit např. síťovou složku atp. Jen připomenu, že pro smazání junction musíme opět použít
rd naTest2
Ptáte se kde se ve Windows Vista můžete setkat s linky? Microsoft je použil pro „defaultní“ složky (Video, Hudba,…) v domovském adresáři. Pokud si pomocí dir vypíšete obsah C:\Users\vase_uzivatelske_jmeno, zjistíte že neobsahuje žádnou složku Video nebo např. Hudba, ale obsahuje složky Videos, Music, Downloads, …