Hogyan kell használni a for /f parancsot batch nyelvben?
Azt szeretném kérdezni hogy a fent említett parancsot pontosan hogyan kell használni. Sok vidót néztem már de egyikben sem magyarázzák el, hogy pontosan mi is ez.
(jelszavak mentésére kellene)
Tessék, itt a doksi, amire azt mondtad, hogy nem létezik:
for /?
FOR /F ["beállítások"] %változó IN (fájlkészlet) DO parancs
[parancs_paraméterei]
FOR /F ["beállítások"] %változó IN ("karakterlánc") DO parancs
[parancs_paraméterei]
FOR /F ["beállítások"] %változó IN ('parancs') DO parancs
[parancs_paraméterei]
vagy a usebackq lehetőséggel:
FOR /F ["beállítások"] %változó IN (fájlkészlet) DO parancs
[parancs_paraméterei]
FOR /F ["beállítások"] %változó IN ("karakterlánc") DO parancs
[parancs_paraméterei]
FOR /F ["beállítások"] %változó IN (`parancs`) DO parancs
[parancs_paraméterei]
A fájlkészlet egy vagy több fájl neve. Minden fájl meg lesz nyitva és
fel lesz dolgozva mielőtt a következő fájlra kerülne a sor. A
feldolgozás a következőkből áll: a fájl beolvasása, önálló sorokra való
szétbontás, az egyes sorok felbontása nulla vagy több tokenre. Ezután a
FOR ciklus törzse lesz meghívva a talált tokenhez beállított változó(k)
értékével. Alapértelmezés szerint a /F kapcsoló az első üres,
elválasztott tokent adja át az összes fájl összes sorából. Az üres sorok
ki lesznek hagyva. Az alapértelmezett elemzési beállításokat
felülbírálhatja a "beállítások" paraméter segítségével. Ez egy olyan
karakterlánc idézőjelek között, amely egy vagy több kulcsszót tartalmaz
a különböző elemzési beállítások megadásához. A kulcsszók a következők:
eol=c - a sorvégét jelző karakter megadása
(csak egy)
skip=n - a fájl elején kihagyandó sorok száma
delims=xxx - elválasztó készlet megadása. Ez lecseréli az
alapértelmezett készletet (szóköz és TAB)
tokens=x,y,m-n - annak megadása, hogy mely tokeneket kell
továbbadni a törzsnek végrehajtásra. Ez további
változók lefoglalását teszi szükségessé. A m-n
forma egy tartomány, amely az m.-től az n.-ig lévő
tokeneket jelenti. Ha a tokens= karakterlánc
utolsó karaktere csillag (*), további változó lesz
lefoglalva, és az utolsó token feldolgozása után
megkapja a maradék sort.
usebackq - az új szemantika használatát jelzi, amikor
a záró idézőjelek közé tett karakterlánc parancsként
lesz értelmezve, míg az egyszeres idézőjelek közé
tett karakterlánc parancskarakterláncnak számít,
és lehetővé teszi a kettős idézőjelek használatát
a fájlnévkészletben.
Néhány példa segíthet:
FOR /F "eol=; tokens=2,3* delims=, " %i in (sajátfájlom.txt) do
@echo %i %j %k
A fenti példa a sajátfájl.txt fájl minden sorát elemezné a
pontosvesszővel kezdődő sorok kihagyásával, minden sor 2. és 3.,
szóközzel vagy TAB-bal elválasztott tokenjét átadná a törzsnek. Figyelje
meg a FOR törzsének %i hivatkozását a 2. token, a %j hivatkozását a 3.
token és a %k hivatkozását a 3. token után lévő tokenekre. Szóközöket
tartalmazó fájlnevek esetén a fájlneveket kettős idézőjelbe kell rakni.
Ha így szeretné használni a kettős idézőjeleket, a usebackq lehetőséget
is használnia kell, különben a kettős idézőjelek feldolgozandó
karakterláncként lesznek értelmezve.
A %i explicit van deklarálva a FOR állításban, a %j és a %k implicit
vannak deklarálva a tokens= lehetőséggel. Maximum 26 tokent adhat meg a
tokens= sor segítségével, de csak akkor, ha nem próbál meg a 'z' vagy a
'Z' betűknél nagyobbat megadni.
Megjegyzés: A FOR változónevekben a kis- és nagybetűk különbözőnek
számítanak, globálisak, és nem lehet egyszerre több, mint 52 aktív.
A FOR /F parancsot egy azonnali karakterlánc elemzésére is használhatja,
ha a zárójelek közti fájlnévkészletet egyszerű idézőjelek közé rakja,
Ekkor egy fájlból származó egyszerű sorként lesz feldolgozva.
Végül a FOR /F parancsot egy parancs kimenetének feldolgozására is
használhatja. Ezt a zárójelek közötti fájlnévkészlet ellentétes
idézőjelek közé rakásával teheti meg. Ekkor parancssorként lesz
tekintve, amely egy gyermek CMD.EXE-nek lesz átadva, és a kimenete a
memóriában lesz rögzítve, és fájlként lesz feldolgozva. Ezért ez a
példa:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
a környezeti változók neveit sorolná fel az aktuális környezetben.
Továbbá a FOR változóhivatkozások helyettesítései is bővültek.
Most már a következő szintaxist is használhatja:
%~I - behelyettesítése a %I paraméter idézőjelek (") nélkül
%~fI - behelyettesítése a %I teljesen minősített elérési útja
%~dI - behelyettesítése a %I meghajtóbetűjele
%~pI - behelyettesítése a %I elérési útja
%~nI - behelyettesítése a %I fájlneve
%~xI - behelyettesítése a %I fájlkiterjesztése
%~sI - csak rövid fájlneveket tartalmazó elérési út
%~aI - behelyettesítése a %I fájlattribútumai
%~tI - behelyettesítése a %I dátuma/ideje
%~zI - behelyettesítése a %I fájlmérete
%~$PATH:I - A PATH környezeti változóban lévő könyvtárak
keresése, és %I behelyettesítése az első megtalált teljesen
minősített elérési úttá. Ha a környezeti változó neve
nincs definiálva, vagy a fájl nem található a keresés
során, a behelyettesítés üres karakterlánc lesz.
A módosítókat összetett eredmények érdekében csoportosítani is lehet:
%~dpI - behelyettesítése a %I meghajtóbetűjele és elérési útja
%~nxI - behelyettesítése a %I fájlneve és kiterjesztése
%~fsI - behelyettesítése a %I teljes elérési útja rövid nevekkel
%~dp$PATH:I - %I a PATH környezeti változóban felsorolt könyvtárak
közötti keresése, és az első megtalált
meghajtóbetűjelévé és elérési útjává való
behelyettesítése.
%~ftzaI - behelyettesítése a %I egy DIR parancs kimenetéhez hasonló
formája.
A fenti példákban a %I és PATH változók más érvényes értékekkel
helyettesíthetők. A %~ szintaxist érvényes FOR változónév zár le. Nagybetűs
változónevek választása (pl. %I) olvashatóbbá teszi a sort, és elkerüli a
kis- és a nagybetűket nem megkülönböztető módosítókkal való keveredést.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!