Tartalomjegyzék

< Windows

Batch programozás

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:

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
szamitas.bat
@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

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

checkFile.bat
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:

checkFile.bat
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”.