Category Archives: Manuál MS-DOS

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. Při psaní tohoto kurzu jsem čerpal z vlastních vědomostí a také z těchto knih, které Vám mohu pouze doporučit:

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

Doufám, že se Vám tento kurz líbil a že Vám pomohl zvládnou DOS, ať už z vašeho zájmu nebo z povinnosti.

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

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.

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.

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:WindowsRododendron.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.

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

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.

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:

  1. + (plus)
  2. – (mínus)
  3. /(děleno)
  4. * (násob)
  5. % (modulo – zbytek po dělení)
  6. ^ (XOR)
  7. | (OR)
  8. & (AND)
  9. << (bitový posun vlevo)
  10. >> (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

Příkazy 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.

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 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.

Příkazy 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).

-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é.

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.

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 ZDE

@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!

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.

Ú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áží (Update 18.8.2014 – již byla odstraněna, od XP, Vista, 7 nefunguje). 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.