Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kör ett angivet kommando för varje fil, inom en uppsättning filer.
Syntax
for {%% | %}<variable> in (<set>) do <command> [<commandlineoptions>]
Parameterar
Parameter | Beskrivning |
---|---|
{%% \| %}<variable> |
Obligatoriskt. Representerar en ersättningsbar parameter. Använd ett tecken på en procent (% ) för att utföra kommandot for i kommandotolken. Använd dubbla procenttecken (%% ) för att utföra kommandot for i en batchfil. Variabler är skiftlägeskänsliga och måste representeras med ett alfabetiskt värde som %a, %beller %c. |
(<set> ) |
Obligatoriskt. Anger en eller flera filer, kataloger eller textsträngar eller ett intervall med värden som kommandot ska köras på. Parenteserna krävs. |
<command> |
Obligatoriskt. Anger det kommando som du vill utföra på varje fil, katalog eller textsträng eller på det värdeintervall som ingår i uppsättningen. |
<commandlineoptions> |
Anger alla kommandoradsalternativ som du vill använda med det angivna kommandot. |
/? | Visar hjälp i kommandotolken. |
Anmärkningar
Du kan använda det här kommandot i en batchfil eller direkt från kommandotolken.
Följande attribut gäller för for-kommandot :
Det här kommandot ersätter
% variable
eller%% variable
med varje textsträng i den angivna uppsättningen tills det angivna kommandot bearbetar alla filer.Variabelnamn är skiftlägeskänsliga, globala och högst 52 kan vara aktiva åt gången.
För att undvika förvirring med batchparametrarna
%0
kan du använda%9
valfritt tecken för variabeln förutom siffrorna 0 till och med 9. För enkla batchfiler fungerar ett enda tecken, till exempel%%f
.Du kan använda flera värden för variabel i komplexa batchfiler för att särskilja olika utbytbara variabler.
Uppsättningsparametern kan representera en enda grupp filer eller flera grupper av filer. Du kan använda jokertecken (* och ?) för att ange en filuppsättning. Följande är giltiga filuppsättningar:
(*.doc) (*.doc *.txt *.me) (jan*.doc jan*.rpt feb*.doc feb*.rpt) (ar??1991.* ap??1991.*)
När du använder det här kommandot ersätter det första värdet i
% variable
eller%% variable
, och sedan bearbetar det angivna kommandot det här värdet. Detta fortsätter tills alla filer (eller grupper av filer) som motsvarar det angivna värdet bearbetas.I och gör är inte parametrar, men du måste använda dem med det här kommandot. Om du utelämnar något av dessa nyckelord visas ett felmeddelande.
Om kommandotillägg är aktiverade (som är standard) stöds följande ytterligare former av för :
Endast kataloger: Om uppsättningen innehåller jokertecken (* eller ?) körs det angivna kommandot för varje katalog (i stället för en uppsättning filer i en angiven katalog) som matchar uppsättningen. Syntaxen är:
for /d {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
Rekursiv: Går igenom katalogträdet som är rotat på drive:path och kör for-instruktionen i varje katalog i trädet. Om ingen katalog har angetts efter /r används den aktuella katalogen som rotkatalog. Om uppsättningen bara är en enskild punkt (.) räknas katalogträdet upp. Syntaxen är:
for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
Iterera ett intervall med värden: Använd en iterativ variabel för att ange startvärdet (start#) och gå sedan igenom ett angivet värdeintervall tills värdet överskrider uppsättningens slutvärde (end#). /l kör iterativt genom att jämföra start# med end#. Om start# är mindre än end# körs kommandot. När den iterativa variabeln överskrider end#, avslutar kommandogränssnittet loopen. Du kan också använda ett negativt steg# för att gå igenom ett intervall i fallande värden. Till exempel genererar (1,1,5) sekvensen 1 2 3 4 5 och (5,-1,1) genererar sekvensen 5 4 3 2 1. Syntaxen är:
for /l {%%|%}<variable> in (<start#>,<step#>,<end#>) do <command> [<commandlineoptions>]
Iterering och filparsning: Använd filparsning för att bearbeta kommandoutdata, strängar och filinnehåll. Använd iterativa variabler för att definiera innehållet eller strängarna som du vill undersöka och använda de olika parsingkeywords-alternativen för att ytterligare ändra parsningen. Använd alternativet parsingkeywords token för att ange vilka token som ska skickas som iterativa variabler. När det används utan tokenalternativet undersöker /f bara den första token.
Filparsning består av att läsa utdata, sträng eller filinnehåll och sedan dela upp det i enskilda textrader och parsa varje rad till noll eller fler token. For-loopen anropas sedan med det iterativa variabelvärdet inställt på token. Som standard skickar /f den första tomma avgränsade token från varje rad i varje fil. Tomma rader hoppas över.
Syntaxerna är:
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>]
Set-argumentet anger ett eller flera filnamn. Varje fil öppnas, läss och bearbetas innan den flyttas till nästa fil i uppsättningen. Om du vill åsidosätta standardparsningsbeteendet anger du parsingkeywords. Det här är en citerad sträng som innehåller ett eller flera nyckelord för att ange olika parsningsalternativ.
Om du använder alternativet usebackq använder du någon av följande syntaxer:
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>]
I följande tabell visas de parsningsnyckelord som du kan använda för parsingkeywords.
Nyckelord Beskrivning EOL= <c>
Anger ett radtecken i slutet (bara ett tecken). hoppa över= <n>
Anger antalet rader som ska hoppa över i början av filen. delims= <xxx>
Anger en avgränsaruppsättning. Detta ersätter standardgränsuppsättningen för utrymme och flik. tokens= <x,y,m–n>
Anger vilka token från varje rad som ska skickas till for-loopen för varje iteration. Därför allokeras ytterligare variabelnamn. m-n anger ett intervall, från mth till nth tokens. Om det sista tecknet i tokens= strängen är en asterisk (*) allokeras ytterligare en variabel och den tar emot den återstående texten på raden efter den sista token som parsas. usebackq Anger att köra en bakåtciterad sträng som ett kommando, använda en sträng med en citattecken som en literalsträng eller, för långa filnamn som innehåller blanksteg, tillåta att filnamn i <set>
, omges av dubbla citattecken.Variabel ersättning: I följande tabell visas valfri syntax (för alla variabler I):
Variabel med modifierare Beskrivning %~I
Expanderar %I
vilket tar bort eventuella omgivande citattecken.%~fI
Expanderar %I
till ett fullständigt kvalificerat sökvägsnamn.%~dI
Expanderar %I
endast till en enhetsbeteckning.%~pI
Expanderar %I
endast till en sökväg.%~nI
Expanderar %I
endast till ett filnamn.%~xI
Expanderar endast till ett filnamnstillägg %I
.%~sI
Expanderar sökvägen så att den endast innehåller korta namn. %~aI
Expanderar %I
till filattributen för filen.%~tI
Expanderar %I
till datum och tid för filen.%~zI
Expanderar %I
till filens storlek.%~$PATH:I
Söker igenom katalogerna i path-miljövariabeln och expanderar %I
till det fullständigt kvalificerade namnet på den första katalogen som hittades. Om miljövariabelnamnet inte har definierats eller om filen inte hittas av sökningen expanderar den här modifieraren till den tomma strängen.I följande tabell visas kombinationer av modifierare som du kan använda för att få sammansatta resultat.
Variabel med kombinerade modifierare Beskrivning %~dpI
Expanderar %I
endast till en enhetsbeteckning och sökväg.%~nxI
Expanderar %I
endast till ett filnamn och filnamnstillägg.%~fsI
Expanderar till ett fullständigt sökvägsnamn %I
med endast korta namn.%~dp$PATH:I
Söker i katalogerna som visas i PATH-miljövariabeln efter %I
och expanderar till enhetsbeteckningen och sökvägen för den första som hittades.%~ftzaI
Expanderar %I
till en utdatarad som liknar dir.I exemplen ovan kan du ersätta
%I
och PATH med andra giltiga värden. Ett giltigt variabelnamn avslutar syntaxen %~ .Genom att använda versaler med variabelnamn som
%I
, kan du göra koden mer läsbar och undvika förvirring med modifierarna, som inte är skiftlägeskänsliga.
Parsa en sträng: Du kan använda
for /f
parsningslogik på en omedelbar sträng genom att omsluta<literalstring>
antingen: dubbla citattecken (utan usebackq) eller med enkla citattecken (med usebackq) – till exempel (MyString) eller ("MyString").<literalstring>
behandlas som en enda rad med indata från en fil. När du parsar<literalstring>
i dubbla citattecken behandlas kommandosymboler som (\ & | > < ^
) som vanliga tecken.Parsning av utdata: Du kan använda
for /f
kommandot för att parsa utdata från ett kommando genom att placera en back-quoted<command>
mellan parenteserna. Den behandlas som en kommandorad som skickas till en underordnad Cmd.exe. Utdata samlas in i minnet och parsas som om det vore en fil.
Exempel
Använd följande syntax för att använda i en batchfil:
for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
Om du vill visa innehållet i alla filer i den aktuella katalogen som har tillägget .doc eller .txt med hjälp av den utbytbara variabeln %fskriver du:
for %f in (*.doc *.txt) do type %f
I föregående exempel ersätts varje fil som har tillägget .doc eller .txt i den aktuella katalogen med variabeln%f tills innehållet i varje fil visas. Om du vill använda det här kommandot i en batchfil ersätter du varje förekomst av %f med %%f. Annars ignoreras variabeln och ett felmeddelande visas.
Om du vill parsa en fil och ignorera kommenterade rader skriver du:
for /f eol=; tokens=2,3* delims=, %i in (myfile.txt) do @echo %i %j %k
Det här kommandot parsar varje rad i myfile.txt. Den ignorerar rader som börjar med ett semikolon och skickar den andra och tredje token från varje rad till för brödtexten (token avgränsas med kommatecken eller blanksteg). Brödtexten i for-instruktionen refererar %i för att hämta den andra token, %j för att hämta den tredje token och %k för att hämta alla återstående token. Om de filnamn som du anger innehåller blanksteg använder du citattecken runt texten (till exempel Filnamn). Om du vill använda citattecken måste du använda usebackq. Annars tolkas citattecknen som att definiera en literalsträng som ska parsas.
%i deklareras uttryckligen i for-instruktionen . %j och %k deklareras implicit med hjälp av tokens=. Du kan använda tokens= för att ange upp till 26 token, om det inte orsakar ett försök att deklarera en variabel som är högre än bokstaven z eller Z.
Om du vill parsa utdata från ett kommando genom att placera uppsättningen mellan parenteserna skriver du:
for /f "usebackq delims==" %i in (`set`) do @echo %i
Om du vill utföra en rekursiv loop av alla filer i en katalog, inklusive underkataloger och eko av deras fullständiga sökväg, när de senast ändrades och filstorleken skriver du:
for /r "C:\My Dir\" %A in (*.*) do echo %~ftzA