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