Slevový týden - Březen C# týden
Využij náš slevový týden a získej až 30 % bodů navíc zdarma! Zároveň také probíhá C# týden se slevou na e-learning až 80 %
Hledáme fulltime programátora do ITnetwork týmu -100% homeoffice, 100% časově flexibilní #bezdeadlinu Mám zájem!

Cyklus se stanoveným počtem opakování

V dnešním díle seriálu se naučíme programovat cykly se stanoveným počtem opakování v Batch, tedy v dávkových souborech systému Windows.

Takže, pojďme si vytvořit program, který nám vypíše čísla od jedné do deseti. Výpis čísel bude s řádkem navíc nebo nějakou jinou věcí ;-)

Začneme jako obvykle:

@ echo off
title Vypisovac čísel do deseti
cd
cls
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Poslední 2 řádky dělají následující

1. cd - nastaví cestu na složku, ze které program právě běží, to nám umožní namísto... C:\Users\...\tex­tovysoubor.txt napsat rovnou textovysoubor.txt, samozřejmě pokud se nachází ve složce s programem 2. cls - vyčistí obrazovku

A teď přejděme k samotnému cyklu:

for %%a IN (1 2 3 4 5 6 7 8 9 10) do (
echo %%a
echo.
)

Pojďme si ho popsat. Je celkem jednoduchý. V prvním řádku cyklus definujeme. for je příkaz pro cyklus, %%a je proměnná cyklu, která musí být ve formátu %%pismeno-od-a-do-z, pak jde IN a do závorek dáme nějaké hodnoty (mohou tam být čísla jako ve zdrojovém kódu nebo cesta k nějakému souboru) Takže nakonec rekapitulace:

@ echo off
title Vypisovac čísel do deseti
cd
cls

for %%a IN (1 2 3 4 5 6 7 8 9 10) do (
echo %%a
echo.
)

Tak a máme hotovo. Výsledek by měl vypadat nějak takto.

Zkuste se s tím trochu pohrát abyste si to zapamatovali. Dám vám domácí úkol - zkuste si vytvořit program, který vám vypíše násobilku.

Příště si ukážeme základy práce se soubory.


 

Stáhnout

Staženo 492x (85 B)
Aplikace je včetně zdrojových kódů v jazyce Batch

 

 

Článek pro vás napsal ...
Avatar
Jak se ti líbí článek?
2 hlasů
Autor sa venuje programovaniu v C#, Batch-i a učí sa programovať web.
Předchozí článek
Práce se soubory a složkami 1/2
Všechny články v sekci
Příkazový řádek a dávkové soubory
Aktivity (1)

 

 

Komentáře

Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Luboš Běhounek Satik:11.2.2013 11:52

Všechny hodnoty toho cyklu musím mít vypsané?

A proč je text česky a některé části textu jsou slovensky? :D

Odpovědět
11.2.2013 11:52
https://www.facebook.com/peasantsandcastles/
Avatar
...
Redaktor
Avatar
Odpovídá na Luboš Běhounek Satik
...:11.2.2013 15:10

Ano, hodnoty musia byt vypisane ale mozes ich nacitat z nejakeho suboru.

Pisem sice po cesky ale niekedy zabudnem a napisem po slovensky - opravim

Odpovědět
11.2.2013 15:10
Nehovor čo vieš, ale snaž sa vedieť, čo hovoríš...
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Luboš Běhounek Satik
David Čápka:11.2.2013 15:18

Já jsem náhodou překvapený že to batch vůbec má :P

Chci se zeptat ještě k článku, jak to vůbec je s Batchem a PowerShell? Má ho PowerShell nahradit?

Odpovědět
11.2.2013 15:18
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
...
Redaktor
Avatar
Odpovídá na David Čápka
...:11.2.2013 15:27

Cital som o tom nieco ale je to mozne, zatial neviem.

Odpovědět
11.2.2013 15:27
Nehovor čo vieš, ale snaž sa vedieť, čo hovoríš...
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Odpovídá na ...
Luboš Běhounek Satik:11.2.2013 15:27

Ta bilinguálnost mi nevadí, jen mě zajímalo, proč je kousek věty česky a kousek slovensky :)

Odpovědět
11.2.2013 15:27
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Luboš Běhounek Satik
Michael Olšavský:11.2.2013 20:57

Hodnoty nemusí byt vypsane. Staci pridat parametr. Myslim ze je to %l pro vypis cisel v poradi. Pote se do kodu vepise misto rady start, posun, konec.

for %l %%a in(1, 1, 10) do(echo %%a)
snad je to spravne. Moc se vtom neorientuju, ale nekde sem to uz cetl.
 
Odpovědět
11.2.2013 20:57
Avatar
Odpovídá na Michael Olšavský
Michael Olšavský:12.2.2013 7:37

Tak je to /l. Omlouvam se.

 
Odpovědět
12.2.2013 7:37
Avatar
...
Redaktor
Avatar
Odpovídá na Michael Olšavský
...:12.2.2013 20:46

Vlastne mas pravdu ale potom treba do zatvoriek takto : (zaciatok,krok,ko­niec)
napr FOR /L %premenná% IN (5,-1,1) DO ... - vytvori postupnost 5 4 3 2 1

Odpovědět
12.2.2013 20:46
Nehovor čo vieš, ale snaž sa vedieť, čo hovoríš...
Avatar
...
Redaktor
Avatar
Odpovídá na ...
...:12.2.2013 20:48

Aha sorry nevsimol som si komentar pred tym :`

Odpovědět
12.2.2013 20:48
Nehovor čo vieš, ale snaž sa vedieť, čo hovoríš...
Avatar

Neregistrovaný
Avatar
:5.4.2013 11:35

Už dlouho nepřibyl další díl.
Bude ještě?
Doufám že jo.

 
Odpovědět
5.4.2013 11:35
Avatar
...
Redaktor
Avatar
Odpovídá na
...:7.4.2013 13:09

Ano pracujem na nom odhadujem ze by mohol byt uz 11.4.

Odpovědět
7.4.2013 13:09
Nehovor čo vieš, ale snaž sa vedieť, čo hovoríš...
Avatar
michal
Redaktor
Avatar
michal:2.7.2013 15:15

něco takového jsem hledal :)

 
Odpovědět
2.7.2013 15:15
Avatar
Jan Marek
Neregistrovaný
Avatar
Jan Marek:3.9.2013 21:58

Ahoj, nenapada vas nejaky prikaz na ukonceni spusteneho programu ? Potrebuju mit obrazek spusteny par vterin a potom ho zavrit automaticky.

 
Odpovědět
3.9.2013 21:58
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Jan Marek
Jan Vargovský:3.9.2013 22:03
taskkill /IM jmenoProcesu
 
Odpovědět
3.9.2013 22:03
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Honza Bittner
Šupák
Avatar
Honza Bittner:27.3.2014 15:44

Sranda ve škole

@ echo off
title alfa
cd
cls

for /l %%x in (1, 1, 10000000) do (
   echo %%x
   md %%x
)

pause

Na 100k složkách jsem to raději zastavil :D

Editováno 27.3.2014 15:45
Odpovědět
27.3.2014 15:44
Student FIT ČVUT. In love with Dart &...
Avatar
...
Redaktor
Avatar
Odpovídá na Honza Bittner
...:10.4.2014 14:42

Poznam :D

Odpovědět
10.4.2014 14:42
Nehovor čo vieš, ale snaž sa vedieť, čo hovoríš...
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Honza Bittner
Ondrca:15.5.2014 20:51

proč tak složitě?

@echo off
:zacatek
echo %random > %random%
goto zacatek

Ale nechal jsem to běžet trochu dýl něž ty :D

Odpovědět
15.5.2014 20:51
Zase jsem o něco chytřejší
Avatar
Tomáš Brůna
Redaktor
Avatar
Tomáš Brůna:7.1.2015 17:00

Ahoj jak mám udělat program: když uživatel stiskne WinKey tak mu naskáče milion barevných okýnek(jako u win 8) :-D

Odpovědět
7.1.2015 17:00
Vi veri universum vivus vici
Avatar
Odpovídá na Jan Marek
Tomáš Pařízek:1.7.2016 15:28

rem Wait 3000 ::Počet milisekund v tomto případě 3 sekundy
exit

 
Odpovědět
1.7.2016 15:28
Avatar
Odpovídá na Tomáš Brůna
Tomáš Pařízek:1.7.2016 15:34

Popiš prosím přesněji co konkrétně potřebuješ.
Pro mě není v Batchi nic broblém.

 
Odpovědět
1.7.2016 15:34
Avatar
Tomáš Brůna
Redaktor
Avatar
Odpovídá na Tomáš Pařízek
Tomáš Brůna:1.7.2016 15:49

ahoj, šlo mi o to, jak zachytit stisk určité klávesy. Například že pokud stisknu F5, tak vyskočí msgbox

Odpovědět
1.7.2016 15:49
Vi veri universum vivus vici
Avatar
mkub
Redaktor
Avatar
Odpovídá na Tomáš Brůna
mkub:1.7.2016 16:07

myslim, ze v BATCHi je to nemozne priamo zachytit scankod
v case MS-DOSu sa to dalo pomocou ovladaca ANSI.SYS vytvorit spustacie menu, ale to nebola vlastnost BAT suborov

a okrem toho BATCH nie je vhodny na vytvaranie programov, skor sa pouziva na jednoduche skripty
a okrem toho, ak uzivatel stlaci CTRL+C, prerusi vykonavanie scriptu,
to by som radsej siel do Pascalu :)

 
Odpovědět
1.7.2016 16:07
Avatar
Tomáš Brůna
Redaktor
Avatar
Odpovídá na mkub
Tomáš Brůna:1.7.2016 16:12

já vím, ale v době kdy jsem se ptal jsem to nevěděl. Ale díky za odpověd :)

Odpovědět
1.7.2016 16:12
Vi veri universum vivus vici
Avatar
mkub
Redaktor
Avatar
Odpovídá na Tomáš Brůna
mkub:1.7.2016 16:22

ale da sa to obist, ze si prichystas utilitku, ktora by zachytavala scankod a by generovala errorlevel pri stlaceni klavesu a pomocou neho a ifov by si mohol spustat msgbox

 
Odpovědět
1.7.2016 16:22
Avatar
Odpovídá na Tomáš Brůna
Tomáš Pařízek:3.7.2016 11:54

choice /c:210 /n

Tato funkce sebere číslo a vloží do proměnn errorlevel

 
Odpovědět
3.7.2016 11:54
Avatar
Pavel Handlovský:31. ledna 11:57

Ahojte.
Neviem si rady s naplnením poli nazvami adresarov. Snazim sa to robit cez cyklus:

set /a a=0
for /D %%i in (*) do (
set Pole[%a%]=%%i
set /a a+=1
)

...kde robim chybu. Vdaka

 
Odpovědět
31. ledna 11:57
Avatar
Odpovídá na Pavel Handlovský
Pavel Handlovský:31. ledna 12:11

Teda aby som to upresnil Pole mi sice naplni ale iba Pole[0] a poslednym nazvom adr.

  • vyber adresarov mi robi ok to mam overene cez echo...
  • aj pocitadlo pocita len ten posun set Pole[%a%] mi nefunguje ... :-(

este raz vdaka

 
Odpovědět
31. ledna 12:11
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 27 zpráv z 27.