for

Minden fájlhoz futtat egy megadott parancsot egy fájlkészleten belül.

Syntax

for {%% | %}<variable> in (<set>) do <command> [<commandlineoptions>]

Parameters

Parameter Description
{%% \| %}<variable> Required. Helyettesíthető paramétert jelöl. Egyetlen százalékjellel (%) hajtsa végre a for parancsot a parancssorban. Használjon dupla százalékjeleket (%%) a for parancs végrehajtásához egy kötegfájlban. A változók megkülönböztetik a kis- és nagybetűket, és betűrendes értékkel kell ábrázolni őket, például %a, %bvagy %c.
(<set>) Required. Egy vagy több fájlt, könyvtárat vagy szöveges sztringet vagy értéktartományt határoz meg, amelyen futtatni szeretné a parancsot. A zárójelek megadása kötelező.
<command> Required. Megadja az egyes fájlokon, könyvtárakon vagy szöveges karakterláncokon, illetve a készletben szereplő értéktartományokon végrehajtani kívánt parancsot.
<commandlineoptions> Megadja a megadott paranccsal használni kívánt parancssori beállításokat.
/? Súgó megjelenítése a parancssorban.

Remarks

  • Ezt a parancsot egy kötegfájlban vagy közvetlenül a parancssorból is használhatja.

  • A for parancsra a következő attribútumok vonatkoznak:

    • Ez a parancs a megadott készletben lévő összes szöveges sztringet lecseréli % variable , vagy %% variable mindaddig, amíg a megadott parancs nem dolgozza fel az összes fájlt.

    • A változónevek megkülönböztetik a kis- és nagybetűket, globálisak, és egyszerre legfeljebb 52 lehet aktív.

    • A kötegparaméterekkel %0%9való összetévesztés elkerülése érdekében a 0-tól9-ig terjedő számok kivételével bármilyen karaktert használhat a változóhoz. Egyszerű kötegfájlok esetén egyetlen karakter, például %%f egy karakter fog működni.

    • Az összetett kötegfájlokban több változót is használhat a különböző cserélhető változók megkülönböztetésére.

  • A beállított paraméter egyetlen fájlcsoportot vagy több fájlcsoportot jelölhet. Helyettesítő karakterek (* és ?) használatával megadhat egy fájlkészletet. Az alábbi érvényes fájlkészletek:

    (*.doc)
    (*.doc *.txt *.me)
    (jan*.doc jan*.rpt feb*.doc feb*.rpt)
    (ar??1991.* ap??1991.*)
    
  • A parancs használatakor a set első értéke helyettesíti % variable a vagy %% variableértéket, majd a megadott parancs feldolgozza ezt az értéket. Ez addig folytatódik, amíg a beállított értéknek megfelelő összes fájl (vagy fájlcsoport) feldolgozásra nem kerül.

  • Az In és a do nem paraméterek, de ezzel a paranccsal kell használnia őket. Ha kihagyja valamelyik kulcsszót, hibaüzenet jelenik meg.

  • Ha a parancsbővítmények engedélyezve vannak (ez az alapértelmezett), a következő további for-formák támogatottak:

    • Csak címjegyzékek: Ha a set helyettesítő karaktereket (* vagy ?) tartalmaz, a megadott parancs minden olyan könyvtárban (a megadott könyvtárban lévő fájlkészlet helyett) fut, amely megfelel a set-nek. A szintaxis a következő:

      for /d {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
      
    • Rekurzív: Végigjárja a meghajtó:path könyvtárfát, és végrehajtja a for utasítást a fa minden könyvtárában. Ha az /r után nincs megadva könyvtár, akkor az aktuális könyvtárat használja gyökérkönyvtárként. Ha a set csak egyetlen pont (.), akkor csak a könyvtárfát számba veszi. A szintaxis a következő:

      for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
      
    • Értéktartomány iterálása: Iteratív változóval állítsa be a kezdőértéket (start#), majd lépkedjen végig egy értéktartományon, amíg az érték meg nem haladja a beállított záróértéket (end#). /l az iteratív végrehajtást a start# és az end# összehasonlításával hajtja végre. Ha a start# kisebb, mint az end#, a parancs végrehajtásra kerül. Ha az iteratív változó meghaladja a end# értéket, a parancshéj kilép a hurokból. A negatív lépés# használatával csökkenő értékekkel is végigléphet egy tartományon. Az (1,1,5) például az 1 2 3 4 5 sorozatot, az (5,-1,1) pedig az 5 4 3 2 1 sorozatot hozza létre. A szintaxis a következő:

      for /l {%%|%}<variable> in (<start#>,<step#>,<end#>) do <command> [<commandlineoptions>]
      
    • Iterálás és fájlelemzés: A parancskimenet, a sztringek és a fájltartalom feldolgozásához használjon fájlelemzést. Iteratív változókkal definiálhatja a vizsgálni kívánt tartalmat vagy sztringeket, és a különböző parsingkeywords beállításokkal tovább módosíthatja az elemzést. A parsingkeywords token beállítással megadhatja, hogy mely jogkivonatokat kell iteratív változóként átadni. Ha a token opció nélkül használja, a /f csak az első tokent vizsgálja meg.

      A fájlelemzés a kimenet, a sztring vagy a fájltartalom beolvasásából, majd az egyes szövegsorokbe való feltörésből és az egyes sorok nulla vagy több jogkivonatba való elemzéséből áll. A for ciklust ezután a rendszer a jogkivonatra beállított iteratív változóértékkel hívja meg. Alapértelmezés szerint a /f az egyes fájlok minden sorából átadja az első üres elválasztott jogkivonatot. A program kihagyja az üres sorokat.

      A szintaxisok a következők:

      for /f [<parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
      for /f [<parsingkeywords>] {%%|%}<variable> in (<literalstring>) do <command> [<commandlineoptions>]
      for /f [<parsingkeywords>] {%%|%}<variable> in ('<command>') do <command> [<commandlineoptions>]
      

      A set argumentum egy vagy több fájlnevet ad meg. Minden fájl megnyitása, olvasása és feldolgozása a készlet következő fájljára lépés előtt történik. Az alapértelmezett elemzési viselkedés felülbírálásához adja meg a parsingkeywords értéket. Ez egy idézett sztring, amely egy vagy több kulcsszót tartalmaz a különböző elemzési beállítások megadásához.

      Ha a usebackq beállítást használja, használja az alábbi szintaxisok egyikét:

      for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
      for /f [usebackq <parsingkeywords>] {%%|%}<variable> in ('<literalstring>') do <command> [<commandlineoptions>]
      for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (`<command>`) do <command> [<commandlineoptions>]
      

      Az alábbi táblázat a kulcsszavak elemzéséhez használható elemzési kulcsszavakat sorolja fel.

      Keyword Description
      eol=<c> A sor végének karakterét adja meg (csak egy karaktert).
      skip=<n> Megadja a fájl elején kihagyandó sorok számát.
      delims=<xxx> Elválasztókészletet ad meg. Ez felülírja az alapértelmezett szóköz- és tabulátorkészletet.
      tokens=<x,y,m-n> Megadja, hogy az egyes sorok mely tokenjeit kell átadni az egyes iterációk for ciklusának. Ennek eredményeképpen további változónevek lesznek lefoglalva. m-n egy tartományt határoz meg az mth-től az n-ediktokenig. Ha a tokens= karakterlánc utolsó karaktere csillag (*), a rendszer egy további változót foglal le, és az utolsó elemzett jogkivonat után megkapja a sorban fennmaradó szöveget.
      usebackq Azt adja meg, hogy parancsként futtasson egy visszaírt sztringet, használjon egy idézőjeles sztringet literális sztringként, vagy szóközöket tartalmazó hosszú fájlnevek esetén engedélyezze a fájlnevek <set>használatát a két idézőjelek közé.
    • Változó helyettesítés: Az alábbi táblázat az opcionális szintaxist sorolja fel (az I. változók esetében):

      Változó módosítóval Description
      %~I Kibontás, %I amely eltávolítja a környező idézőjeleket.
      %~fI %I Teljes elérési útnévre bont.
      %~dI %I Csak meghajtóbetűjelre bont.
      %~pI %I Csak egy elérési útra bont.
      %~nI %I Csak fájlnévre bont.
      %~xI %I Csak fájlnévkiterjesztésre bontható ki.
      %~sI Kibontja a csak rövid neveket tartalmazó elérési utat.
      %~aI Kibontja %I a fájl fájlattribútumait.
      %~tI Kibontja %I a fájl dátumát és időpontját.
      %~zI Kibontja %I a fájl méretét.
      %~$PATH:I Megkeresi a PATH környezeti változóban felsorolt könyvtárakat, és kiterjeszti %I a talált első könyvtár teljes nevére. Ha a környezeti változó neve nincs definiálva, vagy a keresés nem találja a fájlt, ez a módosító az üres sztringre bővül.

      Az alábbi táblázat az összetett eredmények lekéréséhez használható módosító kombinációkat sorolja fel.

      Változó kombinált módosítókkal Description
      %~dpI %I Csak meghajtóbetűjelre és elérési útra bont.
      %~nxI %I Csak fájlnévre és kiterjesztésre bontható ki.
      %~fsI %I Csak rövid névvel rendelkező teljes elérésiút-névre bont.
      %~dp$PATH:I Megkeresi a PATH környezeti változóban %I felsorolt könyvtárakat, és kibontja az első talált meghajtóbetűjelet és elérési utat.
      %~ftzaI Kibontja %I a dir-hez hasonló kimeneti sorra.

      A fenti példákban más érvényes értékekkel helyettesítheti %I a PATH értéket. Az érvényes változónév befejezi a %~ szintaxist.

      Ha például %Inagybetűs változóneveket használ, olvashatóbbá teheti a kódot, és elkerülheti a kis- és nagybetűket megkülönböztető módosítókkal való összetévesztést.

  • Sztring elemzése: Az elemzési logikát egy közvetlen sztringen használhatja for /f , ha becsomagolja <literalstring> a következőt: dupla idézőjelek (usebackq nélkül ) vagy egyetlen idézőjelben ( usebackq használatával) – például (MyString) vagy (MyString). <literalstring> egy fájl egyetlen bemeneti soraként kezeli. Dupla idézőjelek <literalstring> elemzésekor a parancsszimbólumok, például a (\ & | > < ^) szokásos karakterekként lesznek kezelve.

  • Kimenet elemzése: A for /f paranccsal elemezheti a parancs kimenetét úgy, hogy a zárójelek közé idézőjelet <command> helyez. A rendszer parancssorként kezeli, amelyet egy gyermek Cmd.exetovábbít. A kimenetet a rendszer a memóriába rögzíti, és fájlként elemzi.

Examples

A kötegfájlban való használathoz használja a következő szintaxist:

for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]

Ha az aktuális könyvtárban lévő összes olyan fájl tartalmát meg szeretné jeleníteni, amelynek kiterjesztése .doc vagy .txt a cserélhető változóval %f, írja be a következőt:

for %f in (*.doc *.txt) do type %f

Az előző példában az aktuális könyvtárban található .doc vagy .txt kiterjesztésű fájlok helyettesítik a %f változót, amíg az összes fájl tartalma meg nem jelenik. Ha ezt a parancsot kötegfájlban szeretné használni, cserélje le a %f minden előfordulását a következőre:%%f. Ellenkező esetben a rendszer figyelmen kívül hagyja a változót, és hibaüzenet jelenik meg.

Ha egy fájlt szeretne elemezni, figyelmen kívül hagyva a megjegyzés sorait, írja be a következőt:

for /f "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k

Ez a parancs elemzi az egyes sorokat myfile.txt. Figyelmen kívül hagyja a pontosvesszővel kezdődő sorokat, és átadja a második és a harmadik tokent az egyes sorokból a for törzsbe (a tokeneket vessző vagy szóköz választja el). A for utasítás törzse a második jogkivonat lekéréséhez %i, a harmadik jogkivonat lekéréséhez%j%k pedig az összes fennmaradó jogkivonat lekéréséhez . Ha a megadott fájlnevek szóközöket tartalmaznak, használjon idézőjeleket a szöveg körül (például Fájlnév). Idézőjelek használatához a következőt kell használnia: usebackq. Ellenkező esetben az idézőjelek úgy lesznek értelmezve, hogy egy literális sztringet határoznak meg az elemzéshez.

%i explicit módon deklarálva van a for utasításban. %j és %k implicit módon deklarálva vannak a tokens= használatával. A tokens= használatával legfeljebb 26 jogkivonatot adhat meg, ha ez nem tesz kísérletet a z vagy z betűnél magasabb változó deklarálására.

Ha egy parancs kimenetét a zárójelek közé helyezve szeretné elemezni, írja be a következőt:

for /f "usebackq delims==" %i in (`set`) do @echo %i

Ha egy könyvtár összes fájljának rekurzív ciklusát szeretné végrehajtani, beleértve az alkönyvtárakat és a teljes elérési utat, amikor legutóbb módosították őket, és a fájlméretüket, írja be a következőt:

for /r "C:\My Dir\" %A in (*.*) do echo %~ftzA