Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Spustí zadaný příkaz pro každý soubor v sadě souborů.
Syntax
for {%% | %}<variable> in (<set>) do <command> [<commandlineoptions>]
Parameters
| Parameter | Description |
|---|---|
{%% \| %}<variable> |
Required. Představuje nahraditelný parametr. Pomocí jediného znaménka procenta (%) proveďte příkaz for na příkazovém řádku. Pomocí dvojitých znaků procent (%%) proveďte příkaz for v dávkovém souboru. Proměnné rozlišují velká a malá písmena a musí být reprezentovány abecední hodnotou, například %a, %bnebo %c. |
(<set>) |
Required. Určuje jeden nebo více souborů, adresářů nebo textových řetězců nebo rozsah hodnot, na kterých se má příkaz spustit. Jsou vyžadovány závorky. |
<command> |
Required. Určuje příkaz, který chcete provést pro každý soubor, adresář nebo textový řetězec nebo pro rozsah hodnot obsažených v sadě. |
<commandlineoptions> |
Určuje všechny možnosti příkazového řádku, které chcete použít se zadaným příkazem. |
| /? | Zobrazí nápovědu na příkazovém řádku. |
Remarks
Tento příkaz můžete použít v dávkovém souboru nebo přímo z příkazového řádku.
Na příkaz for se vztahují následující atributy:
Tento příkaz nahradí
% variablenebo%% variableza každý textový řetězec v zadané sadě, dokud zadaný příkaz nezřídí všechny soubory.V názvech proměnných se rozlišují malá a velká písmena, globální a současně nesmí být aktivní více než 52.
Abyste se vyhnuli záměně s parametry dávky,
%0můžete%9pomocí , použít pro proměnnou libovolný znak kromě číslic 0 až 9. U jednoduchých dávkových souborů bude fungovat jeden znak, například%%fbude fungovat.Můžete použít více hodnot pro proměnnou ve složitých dávkových souborech a rozlišit tak různé nahraditelné proměnné.
Parametr set může představovat jednu skupinu souborů nebo několik skupin souborů. K určení sady souborů můžete použít zástupné znaky (* a ?). Platné sady souborů:
(*.doc) (*.doc *.txt *.me) (jan*.doc jan*.rpt feb*.doc feb*.rpt) (ar??1991.* ap??1991.*)Když použijete tento příkaz, první hodnota v poli set nahradí
% variableor%% variablea pak zadaný příkaz tuto hodnotu zpracuje. To pokračuje, dokud nejsou zpracovány všechny soubory (nebo skupiny souborů), které odpovídají nastavené hodnotě.In a do nejsou parametry, ale musíte je použít s tímto příkazem. Pokud některé z těchto klíčových slov vynecháte, zobrazí se chybová zpráva.
Pokud jsou povolena rozšíření příkazů (to je výchozí nastavení), jsou podporovány následující další formy for :
Pouze adresáře: Pokud set obsahuje zástupné znaky (* nebo ?), zadaný příkaz se provede pro každý adresář (nikoli pro sadu souborů v určeném adresáři), který odpovídá set. Syntaxe je:
for /d {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]Rekurzivní: Provede adresářový strom, který je rootován na adrese drive:path a provede příkaz for v každém adresáři stromu. Pokud za /r není zadán žádný adresář, použije se jako kořenový adresář aktuální adresář. Pokud je set pouze jedna tečka (.), vytvoří se pouze výčet adresářového stromu. Syntaxe je:
for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]Iterace rozsahu hodnot: Pomocí iterativní proměnné nastavte počáteční hodnotu (start#) a pak projděte množinu hodnot, dokud hodnota nepřekročí nastavenou koncovou hodnotu (end#). /l provede iterativní iteraci porovnáním start# s end#. Pokud je start# menší než end#, příkaz se provede. Když iterativní proměnná překročí end#, příkazové prostředí smyčku ukončí. Můžete také použít záporný krok # a procházet rozsah v klesajících hodnotách. Například (1,1,5) vygeneruje sekvenci 1 2 3 4 5 a (5,-1,1) vygeneruje sekvenci 5 4 3 2 1. Syntaxe je:
for /l {%%|%}<variable> in (<start#>,<step#>,<end#>) do <command> [<commandlineoptions>]Iterace a analýza souborů: Analýza souborů slouží ke zpracování výstupu příkazu, řetězců a obsahu souboru. Pomocí iterativních proměnných definujte obsah nebo řetězce, které chcete prozkoumat, a pomocí různých voleb parsingkeywords analýzu dále upravte. Pomocí možnosti tokenu parsingkeywords určete, které tokeny se mají předat jako iterativní proměnné. Při použití bez možnosti tokenu /f prozkoumá pouze první token.
Analýza souborů se skládá z čtení výstupu, řetězce nebo obsahu souboru a jeho rozdělení na jednotlivé řádky textu a parsování jednotlivých řádků na nula nebo více tokenů. Smyčka for je pak volána s hodnotou iterativní proměnné nastavenou na token. Ve výchozím nastavení /f předá první prázdný oddělený token z každého řádku každého souboru. Prázdné čáry se přeskočí.
Syntaxe jsou:
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>]Argument set určuje jeden nebo více názvů souborů. Každý soubor je otevřen, přečten a zpracován před přechodem na další soubor v sadě. Chcete-li přepsat výchozí chování analýzy, určete parsingkeywords. Jedná se o řetězec s uvozováním, který obsahuje jedno nebo více klíčových slov pro určení různých možností analýzy.
Pokud použijete volbu usebackq , použijte jednu z následujících syntaxí:
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>]V následující tabulce jsou uvedena klíčová slova pro analýzu klíčových slov, která můžete použít pro analýzu klíčových slov.
Keyword Description eol= <c>Určuje konec znaku řádku (pouze jeden znak). skip= <n>Určuje počet řádků, které se mají přeskočit na začátku souboru. delims= <xxx>Určuje sadu oddělovačů. Tím se nahradí výchozí sada mezer a tabulátoru. tokens= <x,y,m-n>Určuje, které tokeny z každého řádku mají být předány do smyčky for pro každou iteraci. V důsledku toho se přidělují další názvy proměnných. m-n určuje rozsah, od m-téhodo n-téhotokenu. Pokud je posledním znakem v řetězci tokens= hvězdička (*), je přidělena další proměnná, která obdrží zbývající text na řádku za posledním analyzovaným tokenem. usebackq Určuje, že chcete spustit řetězec s zpětnými uvozovkami jako příkaz, použít řetězec s jednoduchým uvozovkou jako řetězec literálu, nebo pro dlouhé názvy souborů, které obsahují mezery, povolit, <set>aby názvy souborů byly uzavřeny do uvozovek.Substituce proměnných: V následující tabulce je uvedena volitelná syntaxe (pro libovolnou proměnnou I):
Proměnná s modifikátorem Description %~IRozbalí a odebere %Ivšechny okolní uvozovky.%~fIRozbalí %Iplně kvalifikovaný název cesty.%~dIRozbalí %Ise jenom na písmeno jednotky.%~pIRozbalí %Ipouze cestu.%~nIRozbalí %Ipouze název souboru.%~xIRozbalí %Ise jenom na příponu názvu souboru.%~sIRozbalí cestu tak, aby obsahovala pouze krátké názvy. %~aIRozbalí %Iatributy souboru.%~tIRozbalí %Idatum a čas souboru.%~zIRozbalí %Ivelikost souboru.%~$PATH:IProhledá adresáře uvedené v proměnné prostředí PATH a rozbalí %Ise na plně kvalifikovaný název nalezeného prvního adresáře. Pokud název proměnné prostředí není definován nebo nebyl nalezen soubor hledáním, tento modifikátor se rozbalí na prázdný řetězec.Následující tabulka uvádí modifikační kombinace, které můžete použít k získání složených výsledků.
Proměnná s kombinovanými modifikátory Description %~dpIRozbalí %Ipouze písmeno jednotky a cestu.%~nxIRozbalí %Ipouze název souboru a příponu.%~fsIRozbalí %Inázev celé cesty pouze s krátkými názvy.%~dp$PATH:IVyhledá adresáře, které jsou uvedeny v proměnné %Iprostředí PATH, a rozbalí písmeno jednotky a cestu první nalezené položky.%~ftzaIRozšíří %Ise na výstupní řádek, který je podobný dir.V předchozích příkladech můžete nahradit
%Ia PATH jinými platnými hodnotami. Platný název proměnné for syntaxi ukončí.%~Použitím názvů proměnných velkých písmen, jako
%Ije například , můžete kód lépe čitelný a vyhnout se nejasnostem s modifikátory, které nerozlišují malá a velká písmena.
Analýza řetězce: Logiku
for /fanalýzy u okamžitého řetězce můžete použít zabalením<literalstring>do dvojitých uvozovek (bez použitíbackq) nebo jednoduchých uvozovek (s usebackq) – například (MyString) nebo (MyString).<literalstring>se považuje za jeden řádek vstupu ze souboru. Při analýze<literalstring>dvojitých uvozovek se symboly příkazů, jako jsou (\ & | > < ^), považují za běžné znaky.Výstup analýzy: Příkaz můžete použít
for /fk analýze výstupu příkazu tak, že mezi závorky umístíte uvozovky<command>zpět. Považuje se za příkazový řádek, který se předá podřízené Cmd.exe. Výstup se zachytí do paměti a parsuje se, jako by se jedná o soubor.
Examples
Chcete-li použít for v dávkovém souboru, použijte následující syntaxi:
for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
Chcete-li zobrazit obsah všech souborů v aktuálním adresáři, které mají příponu .doc nebo .txt pomocí nahraditelné proměnné %f, zadejte:
for %f in (*.doc *.txt) do type %f
V předchozím příkladu je každý soubor, který má příponu .doc nebo .txt v aktuálním adresáři, nahrazen proměnnou %f , dokud se nezobrazí obsah každého souboru. Chcete-li použít tento příkaz v dávkovém souboru, nahraďte každý výskyt slova %f%%f. Jinak se proměnná ignoruje a zobrazí se chybová zpráva.
Pokud chcete parsovat soubor bez ohledu na okomentované řádky, zadejte:
for /f "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k
Tento příkaz analyzuje každý řádek v myfile.txt. Ignoruje řádky začínající středníkem a předává druhý a třetí token z každého řádku do těla for (tokeny jsou odděleny čárkami nebo mezerami). Tělo for odkazů na příkaz %i získat druhý token, %j získat třetí token a %k získat všechny zbývající tokeny. Pokud zadané názvy souborů obsahují mezery, použijte uvozovky kolem textu (například Název souboru). Chcete-li použít uvozovky, musíte použít příkaz usebackq. V opačném případě se uvozovky interpretují jako definice literálového řetězce, který se má analyzovat.
%i je explicitně deklarován v příkazu for . %j a %k jsou implicitně deklarovány pomocí tokens=. Pomocí tokens= můžete zadat až 26 tokenů, pokud to nezpůsobí pokus o deklaraci proměnné vyšší než písmeno z nebo Z.
Chcete-li analyzovat výstup příkazu umístěním příkazu set mezi závorky, zadejte:
for /f "usebackq delims==" %i in (`set`) do @echo %i
Pokud chcete provést rekurzivní smyčku všech souborů v adresáři, včetně podadresářů a echo jejich úplné cesty, kdy byly naposledy změněny a jejich velikost souboru, zadejte:
for /r "C:\My Dir\" %A in (*.*) do echo %~ftzA