[[oktatas:operációs_rendszerek:windows|< Windows]]
====== Batch programozás ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2009, 2010, 2011, 2012, 2014
* Licenc: GNU Free Documentation License 1.3
* Web: http://szit.hu
===== Mi az a batch fájl? =====
Olyan állomány amely parancsokat tartalmaz. A batch fájl futtatható állomány,
futtatásakor a benne elhelyezett parancsok kerülnek végrehajtásra.
A batch fájlt értelemszerűen a parancsértelmező kezeli.
===== Batch fájlok létrehozása =====
Egy batch fájlnak kétféle kiterjesztése lehet:
* .bat
* .cmd
Mindkét kiterjesztésű fájlba írhatunk parancsokat. A parancsok
fájlba írása után nincs több teendők magával az állománnyal,
azonnal használhatjuk, vagyis futtathatjuk.
peldabatch.bat
A batch fájlt létrehozhatjuk parancsablakban vagy grafikus felülten.
Parancsablakban az edit nevű paranccsal tudjuk szerkeszteni:
edit peldabatch.bat
===== Megjegyzés =====
REM megjegyzés, ami echo on mellett megjelenik
:: megjegyzés, echo on mellett sem jelenik meg
===== Visszhang =====
A batchfájlba végrehajtása során a végrehajtott parancs mindig megjelenik a képernyőn.
Ezt nevezzük a parancs visszhangjának.
A visszhang kikapcsolása:
@echo off
A @ az aktuális sorban is kikapcsolja.
Változó beállítása
set Konyvtaram=C:\Konyvtaram
Az echo parancs a képernyőre visszhangozza az utána írt szöveget:
echo ki nyer ma?
De segítségével az utána írt szöveg akár állományba is irányítható:
echo ki nyer ma? > info.txt
Batch fájlokban egyszerűen a képernyőre való írásra szokás használni.
===== Operátorok =====
==== Aritmetikai operátorok ====
| operátor | jelentés |
| + | összeadás |
| - | kivonás |
| * | szorzás |
| / | osztás |
==== Összehasonlító operátorok ====
^ művelet ^ jelentés ^ angolul ^
| EQU | egyenlő | equal |
| NEQ | nem egyenlő | not equal |
| LSS | kisebb mint | less than |
| LEQ | kisebb vagy egyenlő | less than or equal |
| GTR | nagyobb mint | greater than |
| GEQ | nagyobb vagy egyenlő | greater than or equal |
Például:
if %szam1% gtr %szam2% (
echo %szam1%
) else (
echo %szam2%
)
===== Kifejezések kiértékelése =====
Használható operátorok:
| + | összeadás |
| - | kivonás |
| * | szorzás |
| / | osztás |
@echo off
set /a eredmeny=5+3
echo %eredmeny%
pause
===== Bekérés =====
@echo off
set /p nev=Nev:
echo Ezt irtad: %nev%
pause
===== Szelekció =====
==== Összehasonlítás ====
@echo off
set nev=jani
if "%nev%" == "jani" (
echo egyezik
)
pause
===== Iteráció =====
==== Egyszerű ciklus ====
@echo off
for /l %%i in (0, +1, 5) do (
echo alma
)
pause
@echo off
set /a "x = 0"
:while1
if %x% leq 5 (
echo %x%
set /a "x = x + 1"
goto :while1
)
pause
==== Amíg típusú ciklus ====
@echo off
:: Legyen a kilépési feltétel a "vege" szó
:ciklus
set /p parancs=parancs:
if "%parancs%" == "vege" goto vege
goto ciklus
:vege
pause
===== Batch fájl futtatása felugró ablak nélkül =====
Dim oShell
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "my-batch-file.bat", 0, False
Set oShell = Nothing
===== Fájlok és könyvtárak létezése =====
echo off
type egya.txt >NUL 2>NUL
if ERRORLEVEL 1 (
echo A fajl nem letezik
) else (
echo "OK a fajl letezik
)
pause
===== Fájlok és könyvtárak létezése listából =====
A következő batch fájl megnézi, hogy a lista.txt állományban soroként
felsorolt állományok és könyvtárak léteznek-e:
for /F "delims=," %%f IN (lista.txt) DO (
if exist %%f (
echo OK %%f
) else (
echo Nincs ilyen fajl vagy konyvtar: %%f
)
)
pause
A delims=, csak azért kell, hogy megfeleljenek a szóközöket tartalmazó fájl vagy könyvtárnevek
is mint a péládul a "Program Files".