neděle 27. září 2020

Příkazový řádek

 

Příkazový řádek

Současná počítačová periodika na období kdy MS-DOS vládnul světu operačních systémů docela zapomínají. Ano, existují knihy, kde o MS-DOSu (respektive příkazovém řádku) najdete docela dost informací, ale většinou jsou jejich ceny přímo světové.

Při startu MS-DOSu vás zaujme úplně černá obrazovka a v levém horním rohu C:\ Ovládání počítače s tímto operačním systémem může být docela pomalé a občas to může být tvrdý oříšek, ale vyplatí se to, protože v DOSu se dají dělat opravdu husarské kousky, které jistě oceníte. Pokud se s DOSem opravdu naučíte tak zjistíte (tedy pokud nejste hráč), že v nejhorším byste se bez Windows nebo Linux klidně obešli.

Hardwarové nároky DOSu jsou opravdu velice malé a myslím, že tato věta o operační paměti vše vystihuje:
640kB should be enough for everybody. (Bill Gates 1981)

A ještě jedna kuriozitka. Několik procent počítačové veřejnosti pracuje s DOSem každý den a většinou o tom ani nevědí. Windowsy 1.0 - ME jsou v podstatě na DOSu založené. Některé příkazy mohou posloužit i hackerům jako dobrý prostředek pro získání informací nebo pro administrátory systémů pro diagnostické účely. Existuje více druhů DOSu. Například FreeDOS, OS-DOS, ale Microsoft DOS se zkrátka proslavil nejvíce.

II. Spuštění a osvojení prostředí
Předpokládám, že tento text čtete ve svých malovaných Windows a určitě si chcete spustit DOS. Klikněte na tlačítko Start -> Spustit -> cmd nebo můžete použít klávesovou zkratku Win + R. Když spustíte cmd, nekoukáte na čistokrevný DOS, ale na jeho nástavbu pro Windows. Můžete v něm dělat to samé, co v DOSu a ještě další funkce, které dokáží pouze Windows (příkazy net, pink, …). Zde je velice lehké nastavit barvu pozadí, velikost, barvu i font písma. Klikem na ikonku v záhlaví okna se zobrazí rozbalovacím menu, v něm zvolte volbu Vlastnosti a poté už je to jednoduché.

Ve Windows 9x, ME je místo cmd příkaz command. Ten má mnohem menší paletu příkazů a je bližší čistokrevnému DOSu. Command zůstává i ve Windows XP i když jeho funkce zde je spíše symbolická. Pokud si budete chtít stáhnout instalační soubory DOSu, najdete je v sekci Stáhnout MS-DOS.

S plnou instalací DOSu na PC se již setkáte velmi zřídka, ale určitě jste se již setkali s bootovací disketou, která je v podstatě Live-distribucí DOSu. Existuje velké množství příkazů a je naprosto nemožné si pamatovat všechny operandy, které příkazy mají proto příkazový řádek nabízí přepínač /? (např. dir /? zobrazí podrobné informace o příkazu dir)

III. Příkazy dir, cd, exit, cls
dir

Příkaz dir slouží pro výpis složky, takže je asi nejpoužívanějším příkazem. Stejně jako další příkazy, které budeme probírat, jeho chování ovlivňují parametry.

Parametr = Jako parametry (jsou také někdy nazývány přepínače) se považují znaky za lomítkem (viz. níže). Tyto parametry ovlivňují vykonání příkazu. Syntaxe: C:\příkaz /parametry

Parametry příkazu DIR


dir /p

Po zaplnění všech řádků se příkaz pozastaví a počká na stisk libovolné klávesy.

dir /b

Vypíše pouze názvy souborů bez záhlaví a zápatí.

dir > vypis.txt

Uloží výpis obsahu složky do souboru vypis.txt (ten bude v aktuálním adresáři).

dir /s

Vypsány budou i podsložky.

dir /q

Navíc bude zobrazen sloupec vlastník souboru.

Změna aktuální jednotky

Přepnou z jedné diskové (nebo i virtuální) jednotky můžete příkazem: pismeno_disku: (např. A:)

cd

Pokud chcete přejít z jedné složky do druhé je zde příkaz cd (Change Directory). Příkaz cd je zde nutný, protože pokud byste napsali jenom system32 a stiskli ENTER, příkazový řádek by si myslel, že jde o soubor a tedy by záhlásil tuto chybu:
system32 není názvem vnitřního ani vnějšího příkazu,
sputitelného programu nebo dávkového souboru.
Je tedy nutné napsat cd system32. Nic nezkazíte pokud budete psát cd ./system32. Tento postup by byl nutný u unixových operačních systémů (je proto dobré si na to zvykat a také je dobré to používat). Pokud se chcete vrátit do nadřazené složky není nutné znovu spoštět příkazový řádek (což jsem dělal já ve svých začátcích), ale k tomuto účelu slouží příkaz cd... Ten přejde do nadřazeného adresáře a příkazem cd../NASM zabijete dvě mouchy jednou ranou, protože tento příkaz přejde do nadřazeného adresáře a současně přejde do adresáře NASM, který se tam nachází. Napsáním příkazu cd bez parametrů se vypíše aktuální složka (zde to zatím není moc nutné, ale hodí se to například při dávkách).

exit

Zavírat příkazový řádek křížkem v pravém horním rohu je zde pokládáno za nekorektní ukončení. Je lepší příkazový řádek ukončovat příkazem exit. Ve Win98 funguje, ale musí se použít tolikrát, dokud se nepozavírají všechny předešlé příkazy.

cls

Při delší práci s příkazovým řádkem se dříve nebo později zaplní obrazovka (to je logický) a proto je dobré pro větší přehlednost občas použít příkaz cls (Clear Screen), který vymaže obrazovku příkazové řádky a kurzor se posune zpět na výchozí pozici při spuštění.

IV. prompt, doskey, echo
prompt

Upravuje výzvu (jako výzva je v příkazové řádce C:\ - píší se za to příkazy) příkazové řádky. Vy jste zvyklí psát příkazy za C:\nazev_slozky\nazev_podrazene_slozky> . Pomocí příkazu prompt můžete poněkud "neatraktivní" C:\ změnit třeba na 20.45 nazev_slozky a nebo jenom na > . Pro bližší informace je zde nápověda příkazové řádky, kterou vyvoláte prompt /? .

echo

Pomocí příkazu echo můžete vypisovat na obrazovku zprávy. Tento příkaz se obzvlášť hodí u dávek (od XV lekce). Příkaz echo můžete kombinovat i s proměnnými. Zkuste napsat do příkazového řádku echo Ahoj %username% a výsledek uvidíte na své obrazovce. Takových proměnných je velké množství, ale blíže se jim budeme věnovat v kapitolách o dávkách.

doskey

Teď výjimečně začnu výklad příkladem. Spusťte příkazový řádek (cmd) a k tomu command . Zkuste v cmd něco napsat a stiskněte šipku vlevo. A teď to samé udělejte v command. Jak vidíte, v cmd se stalo to samé jako v textovém editoru. Kurzor se posunul o pole vlevo, ale v command se znak vlevo od kurzoru smaže, jako kdybyste použili klávesu Backspace. Dále zkuste v command i v cmd klávesy Home, End a Insert. V command se nic nestane, ale v cmd se stane úplně to samé, jako v textovém editoru. Myslím, že jste pochopili význam doskey. Zde jsou další klávesy s kterými umí doskey pracovat. V cmd je doskey zapnut implicitně.

F1

Použij znak z minule zadaného příkazu.

F2

Po stisku se budou vypisovat všechny předcházející znaky minule zadaného příkazu.

F3

Vypíše všechny zbývající znaky z minulého příkazu.

F4

Zobrazí výzvu pro zadání znaku, po který se má text vymazat

F5

Nabídne přechozí zadaný příkaz. Stejnou funkci má i šipka nahoru

F6

Vloží znak konec souboru (Ctrl+Z)

F7

Zobrazí historii příkazů.

Alt+F7

Smaže historii příkazů

V. color, title, chcp, copy
color

Jak už název napovídá, bude se zde jednat o něco s barvou. Pomocí příkazu color můžete měnit barvu pozadí a písma v cmd. Číslem barev může být číslo od 1 - 15. Čísla 10 - 15 se tradičně píší v šestnáckové soustavě (A, B, C, D, E). Zde jsou dvě ukázky.

color 24

Kombinace dobrá pro vojáky.

color f0

Černé na bílém.

title

Slouží ke změně titulku příkazového řádku. Když zadáte title Nazdar! tak v titulku bude místo cmd váš text Nazdar! .

chcp

Chcp slouží ke změně aktuální kódové stránky. Microsoft prosadil kódování nazvané Latin II nebo také CP 852. Ve Windows je toto kódování nazýváno Středoevropské kódové jazyky (DOS) . S nástupem Windows 95 zavedl kódování Windows 1250, dnes většinou nazývané jako Středoevropské jazyky (Windows). Aby toho nebylo málo, svět mimo Microsoft zavedl kódování ISO-8859-2, ve WinXP pojmenované jako Středoevropské jazyky (ISO). Příkazový řádek pracuje s kódováním CP 852 a to je také příčinou, že text importované z příkazového řádku je ve Windows zobrazen chybně. To je zapříčiněno rozdílnou kódovou stránkou. Nejlépe všechno vysvětlí pokusy. Importujte obsah aktuální složky do textového souboru ( dir > C:\seznam.txt ) a teď to otevřete v textovém editoru. A teď otevřete pomocí příkazu příkazu type (slouží k výpisu textového souboru přímo do okna příkazového řádku) nějaký český text. A budou tam taky chyby. Výsledek z toho asi vyvodíte. Pro změnu kódové stránky ve Windows slouží příkaz chcp ciselna_hodnota . Před exportem jakéholiv textu z cmd změňte kódovou stránku na chcp 1250.

copy

Slouží pro zkopírování souboru a nebo více souborů (to jedna z hlavních výhod tohoto příkazu, že můžete jedním příkazem zkopírovat x souborů a nemusíte je ani vypisovat). Syntaxe je následující: C:\copy název_zdroje název_cíle

copy zprava.txt texty

Zkopíruje soubor zprava.txt do složky texty.

copy zprava.txt texty\kopie.txt

Zkopíruje soubor do složky texty, ale zkopírovaný soubor bude mít nový název kopie.txt.

copy *.txt data

Zkopíruje všechny soubory s příponou .txt do složky data.

copy *.txt novy.txt

Spojí všechny soubory s příponou .txt do jednoho souboru novy.txt

VI. mkdir(md), rmdir, del, rename, move
mkdir(md)

Pomocí mkdir (respektive md) můžete vytvářet složky. Při zadání příkazu mkdir c:\data\texty\ahoj a ani jedna ze složek nebude existovat, vytvoří příkaz i cestu.

mkdir texty

Vytvoří podsložku aktuálního adresáře.

mkdir c:\programy\aplikace

Bez ohledu na aktuální umístění vytvoří nový adresář, který bude podsložkou adresáře C:\programy.

rmdir (rd)

Příkaz mkdir (make directory) vytváří a rmdir (remove directory) maže složku. S přepínačem /s se vypíše obsah složky s dotazem na jestli skutečně chceta smazat tento adresář. Přepínače /s /q smaží složku bez jakýchkoli dotazů.

del (erase)

Příkaz del i erase maží soubory. Pro smazání všech souborů s příponou TXT v aktuální složce stačí napsat del *.asm . Tato hvězdičková konvence se dá použít i naopak (del fotka.*).Také můžete smazat všechny soubory v aktuálním adresáři příkazem erase *.*.

rename

Příkaz slouží pro přejmenování souborů nebo adresářů.

move

Příkaz slouží k přesunutí souborů nebo složek. Můžete také použít hvězdičkovou konvenci k přesunutí více souborů (adresářů) najednou. move *.txt adresar přesune všechny textové soubory s touto příponou do složky adresar.

VII. xcopy, attrib, tree
xcopy

XCOPY rozšiřuje možnosti kopírování v příkazové řádce. Příkazem xcopy lze bez problémů kopírovat i složky. Při pokusu o zkopírování pomocí příkazu copy nefungoval příkaz korektně. Syntaxe je standardní, takže xcopy CO KAM /parametry. Atributů tohoto příkazu je velké množství a vzhledem k jednoduchosti použití je zbytečné je vypisovat, takže vás odkazuji na nápovědu k příkazové řádce.

Attrib

Příkazem můžete měnit atributy souborů. Příkazový řádek zná následující atributy:

R

Jen pro čtení

Soubor (složku) s tímto obsahem nelze modifikovat, lze z ní pouze číst.

A

Archivovat

Aplikace Windows se chovají tak, že pokud do nějakého souboru zapíší data, opatří jej atributem Archivovat.

H

Skrytý

Soubor (složka) není ve Windows standardně viditelná.

S

Systémový

Tento druh atributu má asi největší utajení a Windows se jeho smazání brání zuby, nehty. Tímto atributem jsou chráněny třeba soubory jako boot.ini nebo autoexec.bat, které jsou v kořenovém adresáři disku.

Příkaz attrib bez parametrů vypíše všechny soubory v aktuální složce s jejich atributy. Atributy můžete v cmd nastavovat takto:

attrib -r

Zruší parametr jen pro čtení u všech souborů v aktuální složce.

attrib +r *.txt

U všech souborů v aktuální složce s příponou .txt nastaví atribut Jen pro čtení.

attrib +h -r

Nastaví všem souborům v aktuální složke atribut "Skrytý" a odebere atribut "Pouze ke čtení".

attrib +r a:\*.* /s /d-

Uzamkne všechny soubory a složky na disketě. Tomu se říká SÍLA KOMBINACE

tree

Zobrazí strom aktuální složky nebo disku. Příkazem C:\tree > strom.txt exportujete celý strom do souboru strom.txt a to by se mohlo hodit :-)

VIII. subst, shutdown, fdisk, format
subst

Pomocí tohoto příkazu můžete vytvořit logický disk. Logický disk se chová jako disková jednotka. Tento disk se ale dá kdykoliv zrušit a kdykoliv znovu vytvořit. Používá se hlavně pro rychlejší přístup k oblíbeným složkám. Já používám logický disk pro přístup k souboru nasm.exe, který se nalézá na umístění: C:\NASM\SRC\ a vždy musím zadávat tuto dlouhou cestu. Takže si radši vytvořím virtuální disk, který bude touto složkou. Upozorňuji vás, že jakékoliv změny ve virtuálním disku změní ekvivalentně i složku nebo i disk, jehož je virtuální disk prostředníkem. Syntaxe je: subst pismeno_noveho_disku cesta_k_slozce. Teď několik příkladů.

subst m: c:

Obsah jednotky C:\ bude i v jednotce m:\

subst n: c:\nasm\src

Vytvoří se nový disk n:\ v kterém bude přístupný obsah složky c:\nasm\src.

subst m: /d

Odebere logický disk m:

Nevýhodou je, že po restartu PC virtuální disk zmizí. Nejjednodušším postup, jak zabezpečit, aby se disk po restartu neztrácel je následující:

Vyvolejte v jakékoliv složce místní nabídku a zvolte možnost Nový -> Zástupce

Do okna "Zadejte umístění položky" zadejte: cmd /c subst p: c:\nazev_slozky

Nakopírujte tohoto zástupce do složky C:\C:\Documents and Settings\vase_uzivatelske_jmeno\Nabídka Start\Programy\Po spuštění

fdisk

Narozdíl od subst, příkaz fdisk rozděluje disk trvale. Upozorňuji, že fdisk umí rozdělovat pouze disk se souborovým formátem FAT, FAT16, FAT32 a neporadí si s NTFS. Disky s NTFS umí jedině odstranit, ale neumí s nimi pracovat. Pevný disk se pomocí tohoto příkazu musí rozdělovat prázdný, protože jinak na 99 % způsobí poškození dat. Program fdisk se na spouštěcí disketě vytvořené ve Windows XP nenajdete, ale můžete si ho stáhnout z internetu nebo z bootovací diskety Win98 nebo ME, ... Příkaz fdisk nelze spustit z GUI Windows, ale musíte ho spouštět právě z bootovací diskety. Fdisk je tzv. externí příkaz (viz další lekce) a spustíte ho standardně příkazem fdisk. Průvodce vás poté provede rozdělením disku. Pomocí volby fdisku "Odstranit diskový oddíl" můžete disk i dost rychle smazat, protože fdisk narozdíl od příkazu format maže přímo partice nikoliv data. Myslím, že lepší je pro tyto účely použít nějaký specializovaný program, třeba jako Partition Manager.

shutdown

Slouží k vypnutí, restartování nebo odhlášení uživatele přes příkazový řádek. Často se používá pro vzdálené vypnutí počítače nebo pro vypnutí více počítačů najednou. Takže počítače v celé síti můžete vypnout spuštěním jedné dávky. Lze také vypnutí PC načasovat. Vše je popsáno v nápovědě příkazové řádky.

format

Používá se k formátování diskových oddílů. Windows neumožňuje smazání aktuálního diskového oddílu, ale můžete smazat přes příkazový řádek právě neaktivní diskový oddíl (disketu, pevný disk). V operačním systému Windows XP si můžete vybrat jaký souborový systém chcete pro nově zformátovaný disk (parametr /FS: souborvy_system), jmenovku, velikost stopy atd. O všem informuje nápověda k příkazové řádce. Při jakémkoliv formátování doporučuji používat parametr /u, který provede kompletní formátování i s kontrolou povrchu disku apod. Příkaz format doporučuji rovněž spouštět z bootovací diskety. Jenom bych vás chtěl upozornit, že pokud smažete data příkazem format nebo partici příkazem fdisk, data se nesmaží, ale pouze nejsou vidět. Existují stovky programů, které dokážou data znovu obnovit. Pokud chcete disk zformátovat bez možnosti obnovy použijte některý ze specializovaných nástrojů. Výborný je freewarový eraser.

IX. ostatní
Seznam příkazů příkazové řádky jsem exportoval z nápovědy cmd. V další části je kompletní instrukční sada MS-DOSu verze 6.22, kterou si můžete stáhnout v sekci Download. Tuto instrukční sadu jsem rovněž opsal, ale již ne z nápovědy, ale ze skvělé knihy Tomáše Baránka - "Kompletní referenční průvodce" (rok vydání 1994)

Interní příkazy x Externí příkazy

Interní příkazy jsou součástí kódu příkazové řádky (respektive MS-DOSu) a jsou k dispozici kdykoliv. jádře (programovém kódu operačního systému DOS) a jsou proto kdykoliv k dispozici. Externí příkazy jsou programy jako ostatní (třeba Malování), ale komunikují s námi prostřednictvím příkazové řádky.

Instrukční sada příkazové řádku ve Windows XP

Chcete-li získat další informace o příkazu, zadejte příkaz HELP název_příkazu.

ASSOC Zobrazí nebo změní přiřazení koncovek souborů.

AT Naplánuje běh příkazů a programů v počítači.

ATTRIB Zobrazí nebo změní atributy.

BREAK Nastaví nebo vynuluje rozšířenou kontrolu CTRL+C checking.

CACLS Zobrazí nebo změní seznam ACL souborů.

CALL Zavolá dávkový soubor z jiného.

CD Zobrazí název nebo změní aktuální složku.

CHCP Zobrazí nebo nastaví aktivní kódovou stránku.

CHDIR Zobrazí název nebo změní aktuální složku.

CHKDSK Zkontroluje disk a zobrazí zprávu o stavu.

CHKNTFS Zobrazí nebo změní kontrolu disku při spuštění.

CLS Vymaže obrazovku.

CMD Spustí novou instanci příkazovho řádku systému Windows.

COLOR Nastaví výchozí barvu písma a pozadí konzoly.

COMP Porovná obsah dvou souborů nebo sad souborů.

COMPACT Zobrazí nebo změní kompresi souborů v oddílu NTFS.

CONVERT Převede svazek FAT na NTFS. Není možné převádět aktuální jednotku.

COPY Zkopíruje jeden nebo více souboru do jiného umístění.

DATE Zobrazí nebo nastaví datum.

DEL Odstraní jeden nebo více souborů.

DIR Zobrazí seznam souborů a podsložek složky.

DISKCOMP Porovná obsah dvou disket.

DISKCOPY Zkopíruje obsah jedné diskety na jinou disketu.

DOSKEY Edituje příkazy, znovu volá příkazy a umožňuje vytvářet makra.

ECHO Zobrazí zprávu nebo přepne stav zobrazování zpráv na zapnuto nebo

vypnuto.

ENDLOCAL Konec lokalizačních změn prostředí v dávkovém souboru.

ERASE Vymaže jeden nebo více souborů.

EXIT Ukončí program CMD.EXE (příkazový řádek).

FC Porovná dva soubory nebo sady souborů a zobrazí rozdíly.

FIND Vyhledá textový řetězec v souborech.

FINDSTR Vyhledá textový řetězec v souborech.

FOR Spustí určený příkaz pro všechny soubory v sadě.

FORMAT Formátuje disk pro použití v systému Windows.

FTYPE Zobrazí nebo změní typ souboru, použitý v přidruženích rozšíření.

GOTO Interpret příkazového řádku přejde k vykonávání instrukcí v označeném

řádku dávkového souboru.

GRAFTABL Povolí zobrazování sady rozšířených znaků v grafickém režimu.

HELP Poskytne informace o příkazech příkazového řádku systému Windows.

IF Zpracovává příkazy v dávkovém souboru na základě podmínky.

LABEL Vytvoří, mění nebo smaže jmenovku disku.

MD Vytvoří složku.

MKDIR Vytvoří složku.

MODE Konfiguruje systémové zařízení.

MORE Zobrazí najednou pouze jednu obrazovku výstupu.

MOVE Přesune jeden nebo více souborů z jedné složky do jiné.

PATH Zobrazí nebo nastaví cestu vyhledávání spustitelných souborů.

PAUSE Pozastaví zpracování dávkového souboru a zobrazí zprávu.

POPD Obnoví předchozí hodnotu aktuální složky, uloženou příkazem PUSHD.

PRINT Vytiskne textový soubor.

PROMPT Změní tvar příkazového řádku Windows.

PUSHD Uloží aktuální složku a pak ji změní.

RD Smaže složku.

RECOVER Obnoví čitelné informace z chybného nebo poškozeného disku.

REM Označuje komentář v dávkovém souboru nebo souboru CONFIG.SYS.

REN Přejmenuje soubor nebo soubory.

RENAME Přejmenuje soubor nebo soubory.

REPLACE Přepíše soubory.

RMDIR Smaže složku.

SET Zobrazí, nastaví, nebo smaže nastavení prostředí systému Windows.

SETLOCAL Začátek lokalizačních změn prostředí v dávkovém souboru.

SHIFT Posune pozici nahraditelných parametrů v dávkovém souboru.

SORT Setřídí vstup.

START Spustí určený program nebo příkaz v novém okně.

SUBST Přiřadí písmenu jednotky cestu.

TIME Zobrazí nebo nastaví čas systému.

TITLE Nastaví nadpis okna relace programu CMD.EXE.

TREE Graficky zobrazí strukturu složek jednotky nebo cesty.

TYPE Zobrazí obsah textového souboru.

VER Zobrazí verzi systému Windows.

VERIFY Určuje, zda má systém Windows kontrolovat správnost zapsání souborů.

VOL Zobrazí jmenovku jednotky a sériové číslo.

XCOPY Kopíruje soubory a stromy složek.

Instrukční sada MS-DOS 6.22

interní příkazy

Path

Path definuje cesty, ve kterých bude příkazová řádka hledat spustitelné soubory. Např. příkaz format je uložen v adresáři C:\Windows\System32\, ale i když se nalézáte v kořenovém adresáři disku, přesto se format spustí. To je definováno právě příkazem PATH. Cesta C:\>PATH C:\; C:\Windows; C:\Windows\System32; C:\moje_slozka znamená, že po napsání externího příkazu bude nejdříve prohledáván kořenový adresář disku, poté složka C:\Windows, poté složka C:\Windows\System32 a nakonc C:\moje_slozka. Myslím, že je to jasné.

X. Příkazy net - 1. část
Příkazy skupiny net jsou velice užitečné pro práci se sítí, uživatelskými účty a vůbec pro administrační účely. Toho také mohou využít začínající hackeři. Například pomocí dvou příkazů můžete vytvořit nový účet administrátora (cca 10 sekund). Příkazy net jsou tyto:

net accounts

net help

net share

net computer

net helpmsg

net start

net config

net localgroup

net statistics

net name

net stop

net pause

net continue

net print

net use

net file

net send

net user

net group

net session

net view

Příkazy net jsou podporovány až ve Windows 2000! Než začnu popisovat, chtěl bych vám doporučit publikaci, z které jsem se hodně naučil o příkazech net. Je to kniha Jakuba Zemánka Slabá místa Windows aneb jak se bránit hackerům

Net Accounts

Slouží k nastavení uživatelských účtů (např. minimální požadovaná délka hesla, doba platnosti účtu, ...). Příkaz bez parametrů vypíše aktuální nastavení. Pro další vysvětlování příkazů net doporučuji vytvořit další uživatelský účet na kterém budete moci experimentovat. Zde jsou parametry:

/forcelogoff: {minuty | NO}

Čas v minutách do vynuceného odhlášení uživatele. Hodnota NO znamená neomezeně a ta je nastavene implicitně.

/minpwlen:délka

Nastaví minimální počet znaků pro délku hesla. Můžete zadat nejvíce 14 znaků. Pokud nastavíte více bude heslo nepoužitelné. Současná hodnota je 6.

/maxpwage:{dny | UNLIMITED}

Doba platnosti hesla. Hodnota UNLIMITED znamená neomezeně a je nastavena implicitně

/minpwage:dny

Nastaví minimální možnou dobu před možností změny hesla.

/Uniquepw:číslo

Požaduje jedinečnost uživatelského hesla během určeného počtu jeho změn. Maximální hodnota je 24. Nikdy jsem nepoužil.

/domain

Řadič stávající domény. Rovněž jsem nikdy nepoužil.

net config

Zobrazí konfiguraci síťových služeb "Server" a "Workstation". Zde je ukázka výpisu.

Název počítače \\PCMICHAL

Celý název počítače pcmichal

Uživatelské jméno michal

Pracovní stanice je aktivní

Verze softwaru Windows 2002

Doména pracovní stanice SKUPINA

Název DNS domény pracovní stanice (null)

Přihlašovací doména PCMICHAL

Časový limit otevření COM (s) 0

Počet bajtů odeslání COM 16

Časový limit odeslání COM (ms) 250

Příkaz byl úspěšně dokončen.

Net Statistics

Příkaz zobrazí výčet snad všech možných statistik síťových aktivit počítače. Pokud použijete tento příkaz na nějaký server zjistíte určitě zajímavé informace.

Net Session

Správa síťových relací daného počítače. Lidsky řečeno příkaz vám jasně zobrazí, kdo, kdy a odkud sdílel data na vašem počítači a pomocí tohoto příkazu máte možnost sdílení okamžitě přerušit. Syntaxe je net session [\\počítač] [/delete]

XI. Příkazy net - 2.část
net user

Příkaz net user je velice nebezpečná zbraň v rukou hackera a také užitečný příkaz v rukou administrátora.

net user karel 85hgj6@b /add

net localgroup administrators karel /add

Právě jsem vytvořil uživatelský účet karel, s dokonalým heslem a přidělil jsem mu administrátorská práva. To může být užitečné, když správce počítače odejte na minutku na záchod a vy máte k počítači přístup. Zde jsou nejdůležitější parametry:

/add

Přidá uživatelský účet do databáze uživatelských účtů.

/delete

Smaže uživatelský účet.

/active:{yes | no}

Aktivuje či deaktivuje daný účet. Pokud není účet aktivován, nemůže uživatel přistupovat na server. Výchozí nastavení je yes. Tento parametr může být velice úžitečný v kombinaci s příkazem net accounts, ve kterém nastavíte, že pokud uživatel třeba 5x špatně napíše heslo, tak se nastaví tato položka na no. To je často používaná metoda zabezpečení.

/comment:"text"

Umožňuje napsat si poznámku k účtu (max 48 znaků)

/expires:{datum | never}

Datum vypršení účtu. Formát datumu je: mm/dd/yy, či dd/mm/yy podle toho jaký je nastaven kód země.

/fullname:"jméno"

Plné jméno uživatele.

/homedir:cesta

Nastaví cestu domovského adresáře uživatele. Tato cesta musí existovat.

/passwordchg:yes | no

Určuje, zda si mohou uživatelé měnit heslo.

/passwordreq:yes | no

Určuje, zda uživatelský účet musí mít heslo.

/profilepath[:cesta]

Nastaví cestu profilu přihlášení uživatele.

/times:{doby | all}

Doby přihlášení. Doby TIMES mají formát den[-den][,den[-den]], čas[-čas][,čas[-čas]].

net share

Správa sdílených prostředků počítače. S jeho pomocí lze nasdílet data na HDD. Syntaxe je: net share jednotka: cesta

/user:počet

Určuje počet uživatelů, kteří se mohou současně připojit ke sdílenému prostředku.

/unlimited

Ke sdílenému prostředku se může najednou připojit neomezený počet uživatelů - NEDOPORUČUJI!

/delete

Zastaví sdílení prostředku.

Cache:Manual

Povolí ruční ukládání souborů a programů do mezipaměti klienta z této sdílené položky. NEDOPORUČUJI!

Cache:Programs

Povolí automatické ukádání dokumentů a programů do mezipaměti z této sdílenné položky.

/cache:none

Zakáže ukládání do mezipaměti z této sdílené položky.

net localgroup

Správa místních uživatelů počítače. Při spuštění bez parametrů vypíše všechny aktuální skupiny. V tabulce jsou uvedeny přepínače a příklady použití.

/comment:"text"

Přidá poznámku k nové či existující skupině. Text je nutné uzavřít do uvozovek.

/domain

Provede operaci na řadiči aktuální domény. Jinak se operace provádí na místní pracovní stanici

/add

Přidá jméno nebo pracovní skupinu do místní skupiny. Blíže v příkladech dole.

/delete

Odstaraní skupinu nebo jméno uživatele z místní skupiny.

net localgroup administrators karel /add

Přidá účet Karel do skupiny administrators.

net localgroup administrators karel /delete

Vymaže účet karel ze skupiny administrators.

net localgroup opravari /add

Přidá uživatelskou skupinu opravari.

net print

Vzdálená správa sdílených tiskáren a jejich tiskových front.

/hold

Pozastavuje vytištění tiskové úlohy. Úloha zůstává ve frontě.

/release

Reaktivuje úlohu, která je pozastavena.

/delete

Odstraňuje úlohu z tiskové fronty.

net send

Příkaz slouží k posílání zpráv mezi uživateli. Vše ostatní obsahuje nápověda příkazové řádky.

Příkaz net - Windows 98 (V. Doležal)

Jak je to s příkazy net ve Windows 98? Win98 obsahuje méně příkazů net, než Windows XP, ale přesto mohou být také užitečné.

NET HELP

Poskytne informace o příkazech a chybových hláškách.

NET INIT

Načte protokol a ovladač síťového adaptéru bez připojení na Správce protokolů.

NET LOGOFF

Přeruší spojení mezi tímto počítačem a sdílenými prostředky, ke kterým je připojen.

NET LOGON

Identifikuje vás jako člena pracovní skupiny.

NET PASSWORD

Změní vaše přihlašovací heslo.

NET PRINT

Zobrazuje informace o tiskových frontách a řídí tiskové úlohy.

NET START

Zahájí služby.

NET STOP

Ukončí služby.

NET TIME

Zobrazuje čas nebo synchronizuje hodiny počítače s hodinami na časovém serveru Microsoft Windows for Workgroups, Windows NT, Windows 95 nebo NetWare.

NET USE

Otevře nebo uzavře připojení ke sdílenému prostředku nebo zobrazí informace o připojeních.

NET VER

Zobrazí typ a číslo verze používaného redirektoru pracovní skupiny.

NET VIEW

Zobrazí seznam počítačů, které sdílejí prostředky nebo seznam sdílených prostředků určitého počítače.

Úplné smazání hesel ve Windows

Možná namítnete, že to do seriálu MS-DOS nepatří, ale hned vás přesvědčím, že patří a možná víc než si myslíte. To že je systém Windows děravý, je všeobecně známo, ale to že se v tomto operačním systému najde taková mezera, která zatím nebyla odstraněna mě docela zaráží. Pokud se vám stane, že zapomenete heslo, disketu na heslo nemáte a prostě jste v háji, tak nezoufejte. Pomůže vám systém MS-DOS. Spusťte počítač z bootovací diskety a pomocí vašich současných znalostí se dostaňte do adresáře C:\windows\system32\config , kde se nalézá soubor SAM a ten když smažete tak máte vyhráno. Touto fintou se smažou hesla všech uživatelů, včetně administrátorského. Ochranou je souborový systém NTFS s kterým neumí MS-DOS pracovat, ale na internetu si můžete stáhnout NTFSDOS a s tím už tohle není problém. Můžete také použít GNU/Linux popřípadě jiný systém Windows.

XII. ipconfig, ping, systeminfo, ftp

ping

Jedná se o jeden z rodiny příkazů TCP/IP protokolů, který zasílá protokolem ICMP požadavek na odezvu vzdáleného počítače a přitom ukáže jeho IP adresu (jeho časté využití je k zjištění IP adresy). Použití příkazu ping je také často blokováno (např. www.microsoft.com). Příkazy ping i později ipcofig fungují ve i ve Windows 98.

-t

Opakovaně odešle určenému hostiteli žádost o odezvu.

-n počet

Počet odesílaných žádostí o odezvu.

-l velikost

Velikost vyrovnávací paměti k odesílání.

-f

V paketu nastaví nefregmentovat

-i TTL

Hodnota Time To Live

-v TOS

Typ služby

-r počet

Znamená cestu pro zadaný počet směrovačů.

-s počet

Časové razítko pro zadaný počet směrovačů.

-k(-j) hostitelé

Seznam hostitelů určuje všechny uzly cesty (-j hlavní uzly cesty).

-w čas_limit

Časový limit čekání na odpověď (v ms).

ipconfig

Kdo ovládá tento příkaz, ovládá připojení počítače v síti. Ipconfig je výborný zdroj informací. Nebudu o něm nic víc psát, protože bych jenom opakoval nápovědu příkazového řádku.

Systeminfo

Zobrazí podrobné informace o počítači, operačním systému, informace o nainstalovaných programech včetně záplat operačního systému. Nemusím snad ani říkat, jak by to mohlo být pro útočníka přínosné. Nefunguje pod Windows 9x.

FTP

Spustí se jednoduchý FTP klient příkazové řádky. Útočník může odesílat data na svůj FTP server a nebo naopak z něj data přijímat. Také ho můžete využít, když zrovna nemáte jiného FTP klienta.

-v

Vypne zobrazování odpovědí vzdáleného serveru.

-n

Vypne automatické přihlášení po úvodním připojení.

-s:nazev_souboru

Určuje textový soubor obsahující příkazy FTP, které budou automaticky spuštěny po spuštění služba FTP.

-A

Přihlášení jako anonymní uživatel.

hostitel

určí název nebo ip adresu vzdáleného hostitele ke kterému se má příkaz připojit.

tasklist a taskkill

První z jmenovaných zobrazí spuštěné procesy (včetně antivirového programu, firewallu atd.) a drhý z jmenovaných dokáže proces ukončit. Nefungují na Windows 9x.

tracert

Trasování dat směřujících k zadanému cíli. Podobně jako u pingu je k cíli zaslána žádost o odezvu (může být jiného druhu). Odpovídají však všechny počítače, kterými data procházejí, nikoli pouze cíl. Díky tomu jemožné přesně určit trasu, kudy data procházela. Je velice užitečný při hledání problémových míst v síti.

Užitečná dávka

Toto je jednoduchá dávka, která po spuštění provede všechny tyto příkazy a uloží výsledek na disketu. Výsledky si můžete doma v klidu prohlídnout. Tuto dávku si můžete stáhnout

@echo off

net user administrator > a:netuser.txt

net localgroup > netloc.txt

net localgroup administrators > a:netlocad.txt

net session > a:netses.txt

net share > a:netshar.txt

net statistics server > a:netstat.txt

ipconfig /all > a:ipcon.txt

tasklist > a:tasklist.txt

systeminfo > a:system.txt

net config server > a:netcons.txt

net config workstation > a:netconw.txt

net accounts > a:netac.txt

echo Hotovo!

XIII. cacls, diskcomp, convert
Cacls

Slouží k nastavení přístupových práv a výhodou příkazového řádku je, že můžete nastavit práva více uživatelům najednou. Exitují tři módy přístupu:

n

žádný

r

čtení

w

zápis

c

změna

f

úplné řízení

U složek se mohou vyskytnout ještě tzv. příznaky práv: OI - Tato složka a soubory, CI - Tato složka a podsložky, IO - Vyjma aktuálního souboru/složky. Tyto příznaky se mohou i kombinovat. Např.: (OI)(CI) - Tato složka, podsložky a soubory. Pokud nebude příznak uveden týká se nastavení pouze aktuální složky. Pokud budete měnit přístupová práva tak vám mohu doporučit, abyste používali za každou změnou parametr /e. Slouží k tomu, aby původní přístupová práva zůstala zachována pro možnou obnovu. Nefunguje pod Windows 98.

cacls *.txt /t /g pnovak:r

Povolí uživateli pnovakovi čtení všech textových souborů s příponou txt v aktuální složce i v jejích podsložkách.

cacls *.exe /d karel

Uživateli Karel zakáže přístup k souborům exe v aktuální složce. Ostatní přístupová práva budou odstraněna!

diskcomp

Porovnává obsah dvou disků (disket).

convert

Příkaz slouží pro převod mezi souborovými systémy. Pomocí tohoto příkazu nemůžete převádět aktuální disk. Pokud se o to pokusíte bude vám nabídnuta možnost, jestli chcete tento disk převést po startu systému. Než budete převádět nějaký disk, tak doporučuji zálohovat data, protože pokud by vám při převádění došlo k přerušení (výpadek proudu, ...). Convert nefunguje ve Windows 98.

convert h: /fs:ntfs /v

Tento příkaz převede jednotku h: do systému NTFS a přepínač /v znamená, že se vám budou zobrazovány informace o průběhu. Pokud byste chtěli podrobnější informace opět vás odkazuji na nápovědu příkazového řádku.

XIV. Proměnné a jejich užití v dávkách
Hurá! Úspěšně jsme se prokousali k dávkám. Dávka by se dala specifikovat jako sled jednotlivých příkazů DOSu, které společně tvoří celek, který má za úkol provést určitý sled úloh nebo jenom jednu úlohu. Nejjednodušší dávky jsou vlastně jenom několik příkazů jdoucích za sebou uložených v souboru s příponou BAT. Ty složitější už obsahují podmínky a návěstí, takže psaní dávek by se dalo přirovnat k jednoduchému programovacímu jazyku.

Jak a v čem tvořit dávky?

Teď budu předpokládat, že dávky už umíte a že jenom chcete, aby šli spustit. Nejjednodušším způsobem jak vytvořit dávku je napsat ji v Notepadu nebo v jiném textovém editoru (bez formátovacích znaků) a uložit soubor s příponou .bat Radši to ještě trochu upřesním. Pokud budete chtít vytvořit dávku v poznámkovém bloku zvolte možnost Soubor -> Uložit -> Uložit jako typ: Všechny soubory -> Název souboru: neco.bat. Kódování a ostatní možnosti můžete ponechat. Další možností, kde tvořit dávky jsou různé programátorské editory, které dokáží zvýraznit syntax dávkových souborů. Jedním takovým je například CodePad.

Proměnné

Proměnná je pojmenované místo v paměti, které může uchovávat určitou informaci (číslo, řetězec) se kterou pak můžeme dále pracovat. Před a za každou DOSovskou proměnnou musí být znak %. Zde je jednoduchý příklad dávky, která pouze vypíše na obrazovku "Ahoj" a počká na stisk klávesy.

@echo off

set pozdrav=Ahoj

echo %pozdrav%

pause

Deklarace proměnné

Proměnná se deklaruje příkazem SET. Tento příkaz je něco jako var v JavaScriptu. Nejdříve napíšete SET, následuje název proměnné, rovnítko a nakonec hodnota. Hodnota může být číslo, řetězec a nebo rovněž proměnná. Existují proměnné, které si nastavuje sám cmd (repektive Windows). Seznam těchto proměnných získáte příkazem SET bez parametrůe. Pokud umíte trochu anglicky, tak z názvu zjistíte, co která proměnná dělá.

%cd%

Vypíše cestu k aktuální složce.

%date%

Obsahuje aktuální datum.

%time%

aktuální čas

%random%

Vygeneruje náhodné číslo.

%username%

Obsahuje jméno přihlášeného uživatele.

%windir%, %temp%

První obsahuje cestu k instalaci Windows což se dá snadno zneužít a druhá obsahuje cestu k adresáři temp.

%path%

Obsahuje složky, které se prohledávají po zadání příkazu.

Číselné operace s proměnnými

Pomocí dávek můžete velké množství číselných operací. Zde jsou operace s operátory:

+ (plus)

- (mínus)

/(děleno)

* (násob)

% (modulo - zbytek po dělení)

^ (XOR)

| (OR)

& (AND)

<< (bitový posun vlevo)

>> (bitový posun vpravo)

Vždy, když budete dělat nějaké početní operace tak musíte dát o nich příkazovému řádku vědět napsáním příkazu set /a. Dále doporučuji dát celý početní výraz do uvozovek.

REM a = 2; b = 10

set /a "c=a+b" výsledek je 12

set /a "c=a-b" výsledek je -8

set /a "c=a*b" výsledek je 20

set /a "c=(a+b*10)*(13+b)" výsledek je 2346

Textové operace s proměnnými

Možná vás napadla otázka: "Když můžu do proměnných dávat řetězce tak s nima taky musí umět cmd pracovat?" Samozřejmě, že máte pravdu. Nejlépe se to vysvětlí na příkladu. Mám slovo: LOKOMOTIVA. Toto slovo je v proměnné %slovo%.

Příkaz

Funkce

Výsledek

%slovo:~2%

Přeskočí první dva znaky

KOMOTIVA

%slovo:~-6%

Bude použito posledních šest znaků

MOTIVA

%slovo:~0,-2%

Nebudou použity poslední dva znaky.

LOKOMOTI

%slovo:O=a%

Všechny písmena O budou nahrazeny a.

LaKaMaTIVA

%slovo:O=%

Všechny písmena O budou vypuštěna

LKMTIVA

XV. Základní prvky a příklady dávek
pause

Příkaz pause pozastaví běh dávky a počká na stisk libovolné klávsy a poté bude pokračovat v provádění popřípadě se ukončí.

Více příkazů na jednom řádku

Pokud budete chtít dávat více příkazů na jeden řádek, budete muset použít znak & (ampersand). Na české klávesnici ho vytvoříte stiskem kláves pravý ALT + C. Ampersand nejvíce oceníte při tvorbě zástupců cmd (Místní nabídka -> Nový -> Zástupce). Tohoto zástupce musíte ještě přesunout do složky po spuštění. Může být užitečné pro pozdrav nebo upozornění.

cmd /c echo Dobrý den %username% & echo Dnes je %date% %time% & echo Nenavštěvujte

prosím stránky s nelegální a nebo neetickou tématikou. & echo Vaše činnosti jsou monitorovány! echo Děkuji

Správce sítě & pause

Příkazy můžeme také oddělit && (dvojitý ampersand). Následující příkaz bude vykonán pouze pokud skončil předchozí příkaz bez chyby. Dále můžete oddělovat příkazy symbolem || (dvojitá roura). Příkaz za rourami bude provedem pouze v případě, že předchozí příkaz skončil s chybou. Toto nalezne uplatnění při detekci nějakého souboru. Pokud je onen soubor nalezen bude se pokračovat a pokud ne dávka skončí. Později se ale naučíme elegantnější způsob.

@echo off

Před každou dávkou používám příkaz @echo off. Tím vypínám hlášení o průběhu dávky. Zkuste nějakou dávku napsat bez tohoto příkazu na začátku a poznáte proč je to užitečné.

Příklady dávek

Převede datem z formátu cm do formátu dd-mm-yyyy.

@echo off

set datum=%date%

set datum1=%date:~3%

set datum2=%date:.=-%

echo %datum2%

pause

Pomocí operací s texty, které cmd nabízí můžete také udělat i jednoduchou šifru.

Kodér

Dekodér

@echo off

set text="toto je pro studijni ucely"

set texta=%text:a=.%

set textb=%texta:b=:%

set textc=%textb:c=!%

set textd=%textc:d=8%

set texte=%textd:e=>%

set textf=%texte:f=<%

set textg=%textf:g=)%

set texth=%textg:h=(%

set texti=%texth:i=7%

set textj=%texti:j=@%

set textk=%textj:k=#%

set textl=%textk:l={%

set textm=%textl:m=}%

set textn=%textm:n=$%

set texto=%textn:o=^%

set textp=%texto:p=+%

set textq=%textp:q=;%

set textr=%textq:r=_%

set texts=%textr:s=1%

set textt=%texts:t=2%

set textu=%textt:u=/%

set textv=%textu:v=?%

set textw=%textv:w=&%

set textx=%textw:x=3%

set texty=%textx:y=|%

set textz=%texty:z=-%

echo %textz% > C:\vypis.txt

pause

@echo off

set text="2^2^ @> +_^ 12/87@$7 /!>{|"

set texta=%text:.=a%

set textb=%texta::=b%

set textc=%textb:!=c%

set textd=%textc:8=d%

set texte=%textd:>=e%

set textf=%texte:<=f%

set textg=%textf:)=g%

set texth=%textg:(=h%

set texti=%texth:7=i%

set textj=%texti:@=j%

set textk=%textj:#=k%

set textl=%textk:{=l%

set textm=%textl:}=m%

set textn=%textm:$=n%

set texto=%textn:^=o%

set textp=%texto:+=p%

set textq=%textp:;=q%

set textr=%textq:_=r%

set texts=%textr:1=s%

set textt=%texts:2=t%

set textu=%textt:/=u%

set textv=%textu:?=v%

set textw=%textv:&=w%

set textx=%textw:3=x%

set texty=%textx:|=y%

set textz=%texty:-=z%

echo %textz% >C:\vypis2.txt

pause

Stáhnout .zip
Tohle je jenom zlomek umění dávkových souborů MS-DOSu. V současné době je dost lidí, kteří se snaží (třeba i hádáním hesel) dostat do vašeho e-mailu. Tak ať se tam dostane a přečte si takto šifrovanou zprávu. Myslím, že bude překvapen. K tomu abyste si tuto zprávu přečetli musíte mít dekodér, který je to samé, co kodér, ale s prohozenýma hodnotami. Používat kodér s těmito hodnotami už není zrovna bezpečné, a proto je lepší, když si vytvoříte svůj vlastní. Jak vydíte skoro nic za tím není. Jenom to chce trpělvost a čas. Bohužel je nutné pokud budete chtít soubor rozkódovat vložit text z něj do proměnné text v dekodéru. V předposledním řádku kodéru je místo, kam se uloží šifrovaný text a v dekodéru je zase místo, kam se uloží dešifrovaný text. Pokud bude již soubor s názvem vypis.txt nebo vypis2.txt exitovat tak bude nenávratně přepsán! Do tohoto kodéru nesmíte používat diakritiku a velká písmena. Když je tam napíšete, tak tam zůstanou tak jak jsou a nezašifrují se. Takhle by se třeba dala vytvořit i slavná Caesarova šifra (posunutí abecedy o 3 znaky) a nebo překladač z azbuky do latinky.

XVI. Podmínky a návěstí
Podmínka se vykonává jenom jednou a na základě výsledku provede operaci a cyklus se vykonává dokud nějaká podmínka přetrvává. Tak třeba napíšu podmínku, když je a = 1 skoč. Dávka provede porovnání a pokud je a = 1 tak skočí. Kdybych chtěl stejnou věc udělat v cyklu tak by zápis zněl asi takto: dokud je a = 1 tak skákej.

Podmínky

Podmínky se zapisují příkazem IF. Podmínka se dá také negovat (obrátit) a to příkazem not. První konstrukci, kterou vás u dávek naučím je errorlevel. Používá se pokud budeme chtít vyhodnotit výsledek předchozího příkazu. Tak třeba budete chtít vytvořit nějaký soubor a cesta, kterou jste udali nebude nalezena. Potom skončí příkaz s chybou. Tady je malý příklad:

@echo off //vypnu režim echo

copy c:\text.txt c:\text2.txt //zkouším zkopírovat soubor

if errorlevel 1 goto chyba //pokud soubor neexistuje bude návratový

//kód jedna

echo Vse probehlo v poradku //pokud je návratový kód jiný vypiš toto

goto konec //přejdi na návěstí konec

:chyba //návěstí chyba

echo Nastala chyba!! //vypiš hlášení o chybě

:konec

pause //počkej na stisk klávesy

Rutinní záležitostí je porovnávání proměnných, ale ještě než ukážu jednoduchý příklad, tak bych vás chtěl ještě obeznámit s příkazem ELSE. Pokud vytvoříte podmínku (třeba jestli se a = 1 tak skoč) tak pokud neuspěje, program skončí, ale to se vám asi nelíbí a chcete, aby dávka něco udělala v případě neúspěchu a na to se používá příkaz ELSE. Teď malý příklad, který porovnává aktuální datum s 29. 4. 2006 a pokud je to dnes tak vypíše "Svátek má Robert" a v opačném případě, že neví kdo má svátek. Takto by šel vytvořit i kalendář, ale 365 dní se mi sem nechtělo psát.

@echo off

set datum2="%date%"

set datum="so 29.04.2006"

if %datum% EQU %datum2% (

echo Dnes je %date% a svatek ma Robert. Gratujuju!

pause

) else (

echo Dnes je %date% a nevím kdo má svátek

pause

)

Asi vás trochu zmátly závorky. Existují i dávky, které by fungovali i bez nich, ale tyto dávky by mohli mít jenom jeden příkaz, pokud by byla podmínka splněna. To sice dostačuje, pokud bychom chtěli jenom třeba skočit na návěstí, ale já to vždycky dělal se závorkama, a tak to nebudu měnit. Je nutné dodržovat i pořadí závorek. Dále jste si určitě všimli operátoru EQU a asi vás zaskočilo, že tam není operátor "==" jako v ostatních programovacích jazycích. Já taky nechápu jaký to má smysl, ale musíte se s tím smířit. Další operátory jsou následující:

EQU

rovná se (equal)

NEQ

nerovná se (not equal)

LSS

menší než (less)

GTR

větší než (great)

LEQ

menší nebo roven (less or equal)

GEQ

větší nebo roven (great or equal)

Další velice užitečnou funkcí if, je ověření existence souboru. Tento příklad detekuje, jaký máte operační systém. Dávka hledá tapetu Rododendron.bmp, která je pouze ve Windows XP. Takto by se dal zjistit i antivirový program popřípadě záplaty operačního sytému. Pozn.: Příklad předpokládá složku Windows na disku C:\.

@echo off

if exist C:\Windows\Rododendron.bmp (

echo Na tomto pocitaci bezi Windows XP

pause

) else (

echo Na tomto pocitaci je jiny operacni system nez WinXP

pause

)

Návěstí

Určitě jste si všimli, že pokud v dávce nezadáte podmínku tak automaticky zpracuje následující příkaz. Ale občas se může stát, že potřebujete přejít do jiné oblasti kódu a právě začátek této oblasti se nazývá návěstí. Návěstí je jeden řádek, který začíná dvojtečkou a za ním následuje název návěstí. Na návěstí se stejně jako ve vyšších programovacích jazycích skáče pomocí GOTO). GOTO je nepodmíněný skok a pokud z něj budete chtít udělat podmíněný, musíte ho zkombinovat s příkazem IF.

XVII. Komentář dávky, příkazy call a at
Komentář dávky

Jedinou možností, jak napsat v dávce komentář je příkaz REM. Tento postup je nepohodlný a nepružný, ale bohužel dávkové soubory jiný způsob nenabízejí. S příkazem REM musíte nakládat jako s normálním příkazem (úplně stejně jako s příkazem echo), tzn. že ho budete muset psát na zvláštní řádek. Příkaz REM se snažím užívat co nejméně, protože jeho používáním docílím jedině chauzu v dávce. Jeho využití je snad jedině v poznámkách v záhlaví nebo u komplikovaných operacích.

@echo off

REM ----------------------------------------------------------

REM Autor: Michal Blažek

REM Název: mujweb.cz/www/dosms

REM Činnost programu: snaha naučit uživatele s DOSem

REM ----------------------------------------------------------

pause

Příkaz call

Příkaz call volá dávku. Vysvětlení je následující: Představte si, že jste naprogramovali dávku, která má obrovskou velikost (pojmenuji jí davka.bat) a naprogramovali jste další dávku, jejíž funkce je založena na "davka.bat". Uděláte to, že zkopírujete "davka.bat" s obrovsku velikostí do té menší a vznikne vám gigantická. A teď chcete vytvořit další dávku, která opět využívá dávku "davka.bat" a když ji tam opět nakopírujete, tak vám vzniknou dvě gigantické dávky, které mají skoro stejný obsah (lépe řečeno obě v sobě mají nakopírovanou dávku "davka.bat"). A pro tyto účely právě existuje příkaz call. Pro ty co nepochopili, co jsem se tu snažil názorně vysvětlit to teď zkusím říci po lopatě. Příkaz call spouští dávku, ke které jsme zadali cestu. Pokud patříte mezi typ lidí, kterým se říká hračičkové, tak vás jistě potěší následující příklad a určitě ho budete dále rozvíjet. Příklad, který zde chci ukázat počká na stisk klávesy (1-3) a podle odpovídající klávesy vykoná příkaz a dávka se ukončí pokud stisknete klávesu 9 (tato dávka v podstatě vytváří DOS založený na DOSu). Příkaz 1 je jednoduchý dir, příkaz 2 je ver a příkaz 3 je zpráva echo obsahující aktuální datum a čas

@echo off

REM ------------------------------------------------------------

REM Autor: Michal Blažek

REM Název: dosnadosu.bat

REM Činnost programu: Program počká na stisk klávesy 1-3 a následně ENTER

REM a vykonná odpovídající příkaz. Program ukončíte klávesou 9

REM ------------------------------------------------------------

set prikaz1=1

set prikaz2=2

set prikaz3=3

set prikaz4=9

echo Napoveda:

echo 1 - Vypise obsah aktualni slozky

echo 2 - Vypise verzi systemu Windows

echo 3 - Vypise aktualni datum a cas

echo 9 - Ukonci program

set /p cti=DOS:

REM *** Přepínač /p znamená, že se bude číst z obrazovky **

if %cti% EQU %prikaz1% (call prikaz1.bat) else (goto dalsi1)

:dalsi1

if %cti% EQU %prikaz2% (call prikaz2.bat) else (goto dalsi2)

:dalsi2

if %cti% EQU %prikaz3% (call prikaz3.bat) else (goto konec)

:konec

echo Preji prijemny den :-)

pause

at

Příkaz at je normálním příkazem DOSu a nepatří do kategorie if, else, goto, ... AT naplánuje provedení příkazu nebo dávky. Příkaz AT bez parametrů vypíše seznam naplánovaných úloh. Několik příkladů:

at 15:00 smaz.bat

V 15:00 zavolá dávku smaz.bat a vymaže sama sebe ze seznamu naplánovaných úloh. Dávka proběhne na pozadí a vzhledem k rychlosti prováděných dávek si jí uživatel ani nevšimne.

at 15:00 every:po smaz.bat

Dávka se vykonná každé pondělí v 15:00.

XVIII. Cykly
Pro cykly se v dávkách používá příkaz for a má zde velice rozsáhlou syntax a dají se s ním dělat užitečné věci.

Příkaz for - práce s množinou souborů

Velice užitečná je práce se soubory. Syntaxe je: for %x in (sada) do příkaz. Pokud příkaz použijete uvnitř dávky, je nutné proměnnou, která funguje jako řídící, vždy uvozovat dvěma procenty! Příklad vypíše všechny soubory v aktuální složce a počká na stisk klávesy.

@echo off

for %%x in (*) do echo %%x

pause

Tento příklad by se dal lehce pozměnit, aby vypsal jenom textové soubory.

@echo off

for %%x in (*.txt) do echo %%x

pause

Pravděpodobně vás při čtení těchto řádek napadlo, že by šlo tímto způsobem získat název souboru a potom soubor zdvojit. Ano, opravdu to jde.

@echo off

set citac=0

for %%x in (*) do (

echo %%x

copy "%%x" "Kopie - %%x"

set /a citac+=1

REM ** Přičti pokaždé jedna k proměnné citac **

)

echo Zkopíroval jsem %citac% souborů

pause

Příkaz for /L - početní operace

Samozřejmě, že můžete pomocí for dělat také operace se soubory. Syntaxe je: for /l in (odkud, o kolik, kam) do příkaz . Myslím, že tento příklad mluví za vše.

@echo off

echo NECO Z MATEMATIKY

echo Cisla se deli na suda a licha. Suda cisla jsou bezezbytu delitelna

echo cislem dve a licha ne.

echo Suda cisla od 1 do 20

for /L %%x in (2,2,20) do echo %%x

pause

cls

echo Licha cisla od 1 do 20

for /L %%x in (1,2,20) do echo %%x

pause

cls

echo Nasobilka 2:

for /L %%x in (0,2,20) do echo %%x

pause

cls

echo Nasobilka 7412:

for /L %%x in (0,7412,74120) do echo %%x

pause

Příka for /F - práce se soubory

Toto konečný příklad této lekce a věřím, že tuto funkci příkazu for v budoucnu využijete. Všechno budu vysvětlovat na příkladu. Nejdříve si vytvořte textový soubor adresy.txt, který bude vypadat následovně a potom vytvořte soubor generuj.bat, který je pod ním.

adresy.txt

#Toto je vzorový příklad

JMENO | BYDLISTE | POVOLANI

Karel Novak | Praha | ridic

ing. Jan Faust | Pribram | urednik

#Jaroslav Mlady | Olomouc | ucitel

Bedrich Kropenka | Teplice | kuchar

generuj.bat

@echo off

for /f "eol=# delims=| tokens=1,3" %%A in (adresy.txt) do (

echo %%A, %%B

REM ** Příkaz echo jsem u členu %%B nepsal, protože čárka značí, že se mají

REM ** vypsat oba

)

pause

Pro správnou funkčnost je třeba, aby dávka i soubor adresy.txt byly ve stejné složce. Myslím, že na souboru adresy.txt nemusím nic vysvětlovat, ale generuj.bat by si už několik vysvětlení zasluhoval.

eol=#

Tento příkaz znamená, že řádky začínající znakem # budou přeskočeny (samozřejmě si můžete zvolit vlastní znak).

delims=|

Zde se určuje, jakým znakem jsou odděleny sloupce.

tokens=1,3

Tady si můžete určit s jakými sloupci chcete pracovat. Určitě jste si všimli, že sloupec 2 (Bydliště) není ve výsledku vidět.

U tohoto příkazu jsem úmylsně psal strohé vysvětlení nebo vůbec žádné, protože zde jsem vás potřeboval donutit k praxi a ne abyste se něco našprtali.

XIX. Dávky v praxi
První příklad dokáže počítat obvody matematických obrazců. Dal jsem do tohoto příkladu pouze obvod obdélníku a čtverce, ale udělat další by nebyl žádný problém. Tento příklad dokáže počítat jenom ze zadaných hodnot obvod, ale udělat menší úpravu, že třeba když zadáte jako hodnotu písmeno x, tak by se počítala tato strana. Já jsem si podobně vytvořil dávku, která za mě počítá odpisy, když zadám odpisovou skupinu a jestli se jedná o odpisy zrychlené nebo rovnoměrné a zbytek udělá dávka sama (pro ty co nevědí, tak odpisy jsou taková ekonomická hříčka, za tohle vysvětlení by mě učitel ekonomiky zabil). Tak a tady je ten příklad:

obvody.bat

@echo off

REM *** Jednoduchý příklad využití dávek

REM *** Autor: Michal Blažek (mujweb.cz/www/dosms/)

:zacatek

color 35

echo Obvody geometrickych utvaru

echo ===========================

echo C - Obvod ctverce

echo O - Obvod obdelniku

echo K - Konec davky

echo Zadejte pismeno obrazce, jehoz obvod chcete vypocitat:

set /p vyber=

set ctverec=C

set obdelnik=O

set finite=K

if /i %vyber%==%ctverec% goto octverce

if /i %vyber%==%finite% goto konec2

if /i %vyber%==%obdelnik% goto oobdelniku else goto konec

REM *** Přepínač /i znamená, že podmínka nebude rozlišovat malá a velká

REM *** písmena. V tomto příkladu vzácně můžet použít tradiční operátor ==

:octverce

color 42

echo Obvod ctverce

echo =============

set /p stranaA=Zadejte velikost strany a:

echo vzorec: o = a . a

echo a = %stranaA%

echo _________________

echo .

set /a "vysledek1=stranaA*stranaA"

echo o = a . a = %stranaA% . %stranaA% = %vysledek1%

echo .

pause

goto konec2

:oobdelniku

color 75

echo Obvod obdelniku

echo ===============

set /p stranaA=Zadejte velikost strany a:

set /p stranaB=Zadejte velikost strany b:

echo vzorec: o = a . b

echo a = %stranaA%

echo b = %stranaB%

echo _________________

echo .

set /a "vysledek1=stranaA*stranaB"

echo o = a . b = %stranaA% . %stranaB% = %vysledek1%

echo .

pause

goto Konec2

:konec

color 67

echo Toto pismeno neznam. Nyni stisknete libovolnou klavesu pro navrat do

hlavni nabidky

:konec2

Další příklad dokáže odesílat e-maily pomocí příkazové řádky. Sám o sobě příkazový řádek nedokáže e-maily odesílet, ale dá se to udělat pomocí programu Postie (na internetu ho naleznete docela rychle). Nyní využijeme naší znalosti příkazu for /f, protože budeme muset brát data ze souboru. Zde bych vás chtěl upozornit, že program Postie se vyvíjí a s ním nestačím držet krok, takže tento příklad nemusí již fungovat.

post.bat

@echo off

chcp 1250

for /f "tokens=1,2 delims=;" %%i in (adresy.txt) do (

..\postie\postie -host:mail.xxx.cz -from:michal.blazek@xxx.cz -to:%%i

-s:"Predmet" -msg:"%%j," -file:dopis.txt -ns -charset:windows-1250 -

log:log.txt || echo %%i;%%j >> chyby.txt

echo Odesláno na %%i

)

adresy.txt

michal.blazek@xxx.cz;Nazdar Michale

jklas@yyy.cz;Nazdar Honzo

dopis.txt

Nazdar Michale,

tady ti píšu pokusnej dopis

Ještě budete muset vytvořit soubor chyby.txt, který bude na začátku a doufejme i nadále prázdný.

XX. Závěr
Hurá, dostal jsem se téměř po 7 měsících na konec. Tento kurz mě stál času, ale vyplatilo se to. Stránky podobného typu jsem v češtině na internetu nikde nenašel, a tak mě napadlo je vytvořit. Proti různým Windowsům a Linuxům to byla příjemná změna. Při psaní tohoto kurzu jsem se moc nevěnoval stylistické a gramatické úpravě, takže je téměř jisté, že češtinářům se zde protáčí panenky. Na každé stránce je něco o autorovi, takže já nebudu vyčnívat z řady. Jmenuji se Michal Blažek. V době ukončení tohoto kurzu je mi 16 let a navštěvuji 1. ročník Ekonomického lycea v Příbrami (opravdu se mi občas zdá, že ho jenom navštěvuji). Baví mě téměř vše, co má nějako souvislost s počítači. To je vše podstatné a jenom bych vám chtěl představit tři publikace, bez kterých by tento kurz nikdy nevznikl. Zároveň bych chtěl autorům poděkovat, že napsali tyto vynikající knihy. Dále děkuji za spolupráci V. Dolažalovi.

Michal Politzer

Windows XP tajemství a kouzla příkazového řádku

Jakub Zemánek

Slabá místa Windows aneb jak se bránit hackerům

Tomáš Baránek

MS-DOS Kompletní referenční průvodce

. Dávky si můžete stáhnout ZDE. ZDE
Příkazy pro práci se soubory

COPY kopíruje soubory

DEL maže soubory

REN provádí přejmenování souboru

TYPE vypíše obsah (textového) souboru

říkazy pro práci s disky a adresáře

DIR vypíše obsah adresáře

CD nastaví pracovní adresář (přepne do pracovního adresáře)

MD vytvoří adresář

RD vymaže prázdný adresář

Příkazy pro práci s datem a časem

DATE čte a nastavuje systémové datum

TIME čte a nastavuje systémový čas

Obecné řídící a konfigurační příkazy

BREAK nastavuje způsob přerušení programu klávesami Ctrl-Break (Ctrl+c)

CHCP nastaví kódovou stránku používané tabulky znaků

CLS maže obsah textové obrazovky

CTTY vybírá standardní zařízení počítače pro vstupně/výstupní operace

EXIT ukončuje činnost stávajícího interpretu příkazů a vrací řízení na vyšší úroveň interpretu

LH načte program do horní paměti (upper memory)

VER zobrazí číslo aktuálně používané verze systému MS-DOS

VERIFY zapíná kontrolu ověřování správnosti při jakýchkoliv přenosech souborů

VOL zobrazí jméno disku a jeho sériové číslo

Proměnné prostředí a příkaz pro práci s nimi

PATH Proměnná PATH (cesta) viz.dole

PROMPT Proměnná PROMPT (výzva) definuje způsob zobrazení výzvy operačního systému v příkazové řádce

SET definuje proměnné prostředí, zobrazuje je a přiřazuje jim hodnoty.

Příkazy pro činnost dávkových souborů

CALL, FOR, GOTO, IF, REM, SHIFT o nich až dále

Externí příkazy

Příkazy pro práci se soubory a adresáři:

MOVE Přesouvá soubory a přejmenovává adresáře

UNDELETE Obnovuje vymazané soubory

XCOPY Kopíruje celé adresářové struktury

REPLACE Řídí nahrazování souborů

ATTRIB Zobrazuje a upravuje atributy souborů

TREE Zobrazuje adresářový strom disku

DELTREE Maže celé adresářové stromy

RESTORE Obnovuje soubory uložené příkazem BACKUP z dřívějších verzí DOSU

FC Porovnává obsah souborů

MSBACKUP Zálohuje soubory a adresáře

SUBST Vytváří umělý, virtuální disk

SHARE Definuje podmínky pro sdílení a zamykání souborů

EDIT Spouští jednoduchý textový editor

EXPAND Rozbaluje soubory

Příkazy pro práci s diskem

FORMAT Formátuje disk nebo disketu

FDISK Připravuje médium k formátování

UNFORMAT Obnovuje data ztracená formátováním

LABEL Připravuje disku jméno

SYS Vytváří systémový disk

DISKCOPY Kopíruje celé disky

DISKCOMP Porovnává obsahy disků

CHKDSK Kontroluje integritu souborů na disku

SCANDISK kontroluje a opravuje chyby na disku

SMARTDRV Vytváří vyrovnávací paměť (cache) disku

DEFRAG Odstraňuje fragmentaci disku

DRVSPACE Komprimuje disk

Příkazy pro práci s pamětí

MEM Zkoumá obsah paměti počítače

MEMMAKER Optimalizuje využití paměti

LOADFIX Načítá program do horních 64 kB paměti

Klávesnice a obrazovka, národní nastavení

DOSKEY Umožňuje editaci příkazové řádky a tvorbu příkazových maker

KEYB Zapíná na klávesnici národní sadu znaků

GRAPHICS Podporuje tisk obrazovky na různých tiskárnách

COUNTRY Instaluje národní podporu

Periférie a komunikace

MODE Nastavuje základní komunikační parametry rozhraní

PRINT Definuje parametry tisku a řídí tisk na pozadí

MSCDEX Instaluje rozhraní pro jednotku CD-ROM

INTERLNK Instaluje podporu komunikace dvou počítačů po LPT nebo COM

INTERSVR Stejné jako předchozí, akorát na straně serveru

Ostatní externí příkazy a programy

MSD Diagnostický test počítače

MORE Systémový filtr, pauzující výpisy po obrazovkách

FIND Systémový filtr, nalézá řetězce

SORT Systémový filtr, třídí výstupy

POWER Snižuje spotřebu energie procesoru

MSAV Antivirový program

DEBUG Ladicí a programovací prostředek

QBASIC Programovací jazyk QuickBASIC

VSAFE Rezidentní antivirový program

HELP Nápověda MS-DOSu

FASTHLEP Stručná nápověda MS-DOSu

FASTOPEN Ukládá informace o otevřených souborech do paměti, zrychluje tak přístup k nim.

SETVER Nastavuje verzi operačního systému pro korektní programy

CHOICE Poskytuje uživateli výběr z více odpovědí

Programová podpora Microsoft Windows

MWAVTSR, MWBACKUP, MWAB, SMARTMON, MWUNDEL - nyní už zbytečné

 

Žádné komentáře:

Okomentovat

Audit Zabezpečení

  Audit Zabezpečení AUDIT KYBERNETICKÉ BEZPEČNOSTI Oblast kybernetické bezpečnosti je v České republice regulována zákonem č. 181/2014 Sb...