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 502x (85 B)
Aplikace je včetně zdrojových kódů v jazyce Batch

 

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
Č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.
Aktivity (1)

 

 

Komentáře
Zobrazit starší komentáře (17)

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
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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
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 10 zpráv z 27. Zobrazit vše