Kommandot: "FOR" är på Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. tillgänglig
Exemplen för kommandot "FOR"
De
`FOR`kommando i Windows Kommandotolk används för att loopa in batchfiler. Här är några exempel:
Exempel 1: Gå igenom filer i en katalog:
FOR %G IN (katalog\*) DO ECHO %G
Beskrivning: Detta kommando skriver ut namnet på varje fil i den angivna katalogen.
Exempel 2: Gå igenom filer med ett specifikt filtillägg:
FOR %G IN (katalog\*.txt) DO ECHO %G
Beskrivning: Skriver ut namnet på varje textfil i den angivna katalogen.
Exempel 3: Iterering genom filer rekursivt i underkataloger:
FOR /R katalog %G IN (*.txt) DO ECHO %G
Beskrivning: Går rekursivt igenom alla underkataloger i den angivna katalogen och skriver ut namnet på varje textfil.
Exempel 4: Gå igenom siffror i ett specifikt intervall:
FOR /L %G IN (1,1,10) DO ECHO %G
Beskrivning: Matar ut siffrorna från 1 till 10.
Exempel 5: Gå igenom tecken i en sträng:
FOR %G IN ("Hallå") DO ECHO %G
Beskrivning: Skriver ut varje bokstav i ordet
"Hej".
Exempel 6: Gå igenom filinnehållet rad för rad:
FOR /F "tokens=*" %G IN (fil.txt) DO ECHO %G
Beskrivning: Itererar genom raderna i filen
"File.txt" och matar ut varje rad.
Exempel 7: Iteration genom miljövariabler:
FOR %G IN (%PATH%) DO ECHO %G
Beskrivning: Itererar genom sökvägarna i miljövariabeln
`PATH`och matar ut varje väg.
Exempel 8: Användning av`SET`i en slinga:
FOR %G IN (1 2 3) DO SET /A siffra=%G * 2 & ECHO Dubbel av %G är %siffra%
Beskrivning: Ställer in en variabel
`siffra`till dubbla det aktuella numret i slingan och skriver ut detta.
Exempel 9: Iterering genom underkataloger och filer:
FOR /R %G IN (*) DO ECHO %G
Beskrivning: Går rekursivt igenom alla underkataloger och filer i den aktuella katalogen.
Exempel 10: Kapslade slingor:
FOR %G IN (1 2) DO FOR %H IN (A B) DO ECHO %G%H
Beskrivning: Kapslar två slingor och skriver ut alla kombinationer av %G och %H.
Observera att i batchfiler
`%`genom
`%%`bör bytas ut. Till exempel:
`FOR %G IN (...) DO ECHO %%G`. Endast ett procenttecken används i direktuppmaningen (
`%`).
"FOR" Utdrag från Microsoft Windows Hjälp
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Anropar ett kommando för var och en av filerna i ett urval.
FOR %variabel IN (urval) DO kommando [kommandoparametrar]
%variabel Anger en utbytbar parameter (en enda
bokstav).
(urval) Anger en uppsättning av filer. Jokertecken
kan användas.
kommando Anger kommandot som anropas för var och en
av filerna.
kommandoparametrar Anger parametrar eller växlar för angivet
kommando.
När FOR-kommandot används i en kommandofil, ange %%variabel
istället för
%variabel. Variabelnamn är skiftlägeskänsliga. Därför skiljer sig
%i.
från %I.
Om kommandotilläggen är aktiverade stöds följande tilläggsformat
för kommandot FOR:
FOR /D %variabel IN (uppsättning) DO kommando [parametrar]
Om uppsättningen innehåller jokertecken, matchas katalognamn
i stället för filnamn.
FOR /R [[enhet:]sökväg] %variabel IN (uppsättning) DO kommando
[parametrar]
Går igenom katalogträdet med roten [enhet:]sökväg och
tillämpar FOR-
uttrycket på varje katalog i trädet. Om ingen katalog
anges efter /R används den aktuella katalogen.
Om uppsättningen bara består av ett enda punkttecken (.)
kommer den att räkna upp katalogträdet.
FOR /L %variabel IN (start,steg,slut) DO kommando [parametrar]
Uppsättningen är en talsekvens från start till slut med
avståendet steg.
Uppsättningen (1,1,5) skulle skapa talsekvensen 1 2 3 4 5 och
(5,-1,1)
skulle skapa talsekvensen (5 4 3 2 1)
FOR /F ["alternativ"] %variabel IN (filuppsättning) DO kommando
[parametrar]
FOR /F ["alternativ"] %variabel IN ("sträng") DO kommando
[parametrar]
FOR /F ["alternativ"] %variabel IN ('kommando') DO kommando
[parametrar]
eller, om alternativet usebackq används:
FOR /F ["alternativ"] %variabel IN (filuppsättning) DO kommando
[parametrar]
FOR /F ["alternativ"] %variabel IN ('sträng') DO kommando
[parametrar]
FOR /F ["alternativ"] %variabel IN (`kommando`) DO kommando
[parametrar]
filnamnuppsättningen består av ett eller flera filnamn. Varje
fil
öppnas, läses och bearbetas innan nästa fil i uppsättningen
påbörjas.
Bearbetningen består i att filen läses in och delas upp i
separata
textrader som sedan tolkas till noll eller flera token.
For-loopen anropas sedan med variabelvärdet satt till
de funna token-strängarna. Som standard skickar /F det
första tokenet (åtskilda med blanksteg) från varje rad i
varje fil.
Tomma rader hoppas över. Du kan åsidosätta standardtolkningen
genom att ange den valfria parametern "alternativ". Det är en
sträng omsluten av citattecken som innehåller ett eller flera
nyckelord
för annorlunda tolkning. Nyckelorden är:
eol=c - anger ett kommentartecken i slutet av
raden
(bara ett)
skip=n - anger att n rader ska hoppas över i
i början av filen.
delims=xxx - anger en uppsättning avgränsare. Detta
ersätter
blanksteg och tabb som
standardavgränsare.
tokens=x,y,m-n - anger vilka token från varje rad som
ska skickas
till loopen för varje iteration. Detta
medför
att ytterligare variabelnamn allokeras.
Formatet m-n är ett intervall som anger
token
nr n till token nr m. Om det sista
tecknet
i strängens tokens= är en asterisk,
allokeras ytterligare en variabel som
kommer
att innehålla den återstående texten på
raden
efter senast bearbetade token.
usebackq - anger att den nya semantiken används.
I den körs strängar omslutna med
lutande citattecken
som ett kommando och strängar omslutna
med enkla
citattecken som literala
strängkommandon. Det
innebär att du kan använda dubbla
citattecken för
att omsluta filnamn i
filnamnsuppsättningar.
Några exempel:
FOR /F "eol=; tokens=2,3* delims=, " %i in (minfil.txt) do @echo
%i %j %k
tolkar varje rad i minfil.txt och ignorerar rader som börjar
med ett
semikolon, skickar token nr 2 och nr 3 från varje rad till
FOR-satsens
kropp. Kommatecken och blanksteg behandlas som avgränsare
mellan token.
Notera att FOR-satsens kropp använder %i för att referera
till token
nr 2, %j för att referera till token nr 3 och %k för att
referera till
alla återstående token efter det tredje. Filnamn som
innehåller blanksteg
måste omslutas med dubbla citattecken. För att kunna använda
dubbla citat-
tecken på det här sättet måste du ange alternativet usebackq,
annars
tolkas de dubbla citattecknen som en literal sträng som ska
tolkas.
%i är explicit deklarerad i FOR-satsen och %j och %k är
implicit deklarerade via alternativet tokens=. Du kan ange
upp till
26 token med raden tokens=, förutsatt att den inte medför ett
försök att deklarera en variabel som är högre än bokstaven
"z" eller "Z".
Observera att FOR-variabelnamn består av en enda bokstav, är
skiftlägeskänsliga, globala och samt att högst 52 variabler
kan vara
aktiva samtidigt.
Du kan även använda FOR /F på en direkt sträng genom att
skriva
filnamnsuppsättningen omsluten med enkla citattecken mellan
parenteserna.
Den kommer att behandlas och tolkas som en enda rad från en
fil.
Slutligen går det att använda kommandot FOR /F för att tolka
utdata från
ett kommando. Du gör detta genom att skriva
filnamnsuppsättningen omsluten
av enkla, sneda citattecken mellan parenteserna. Den kommer
att tolkas som
en kommandorad som skickas till en underordnad CMD.EXE vars
utdata
infångas i minnet och tolkas som om den vore en fil. Det
innebär att
följande exempel:
FOR /F "usebackq delims==" %i IN (`uppsättning`) DO @echo
%i
räknar upp miljövariabelnamnen i den aktuella miljön.
Dessutom har ersättning av referenser för variabeln FOR
förbättrats.
Det går nu att använda följande alternativa syntax:
%~I - expanderar %I och tar bort alla omslutande
citattecken (")
%~fI - expanderar %I till en fullständig sökväg
%~dI - expanderar %I till endast en enhetsbeteckning
%~pI - expanderar %I till endast en sökväg
%~nI - expanderar %I till endast ett filnamn
%~xI - expanderar %I till endast ett filnamnstillägg
%~sI - den expanderade sökvägen innehåller endast
kortnamn
%~aI - expanderar %I till filens filattribut
%~tI - expanderar %I till filens datum/tid
%~zI - expanderar %I till filens storlek
%~$PATH:I - söker igenom katalogerna angivna i
miljövariabeln PATH
och expanderar %I till det fullständiga namnet
för den
första funna förekomsten.
Om namnet på miljövariabeln inte är definierat,
eller om filen inte gick att hitta under
sökningen,
expanderas den här modifieraren till den tomma
strängen.
Modifierarna kan kombineras för att skapa sammansatta resultat:
%~dpI - expanderar %I till endast enhetsbeteckning och
sökväg
%~nxI - expanderar %I till endast filnamn och
filnamnstillägg
%~fsI - expanderar %I till en fullständig sökväg med
endast kortnamn
%~dp$PATH:I - söker efter %I i katalogerna angivna i
miljövariabeln PATH
och expanderar till enhetsbeteckningen och
sökvägen för den
första funna förekomsten.
%~ftzaI - expanderar %I till en DIR-liknande utdatarad
I ovanstående exempel kan %I och PATH ersättas med andra giltiga
värden.
Syntaxen för %~ måste avslutas med ett giltigt FOR-variabelnamn.
Om du använder versaler som variabelnamn, t.ex. %I, blir syntaxen
lättare att förstå och du undviker förväxling med modifierarna
(som
inte är skiftlägekänsliga).
Viktig information, tips för kommandot "FOR"
När du använder
`FOR`kommandot i Windows kommandotolk finns det några viktiga punkter att notera:
1.
Syntax i batchfiler: Om du har
`FOR`kommandot i en batchfil måste du
`%`genom
`%%`ersättning. Till exempel:
`FOR %%G IN (...) DO ECHO %%G`.
2.
Användning av variabler: Vanligtvis använder du variabler (t.ex.
`%%G`) i
`FOR`-Loop för att lagra värden. Observera att variablerna inte kan komma åt de tilldelade värdena utanför slingan.
SET Variable=Ursprungligt värde
FOR %%G IN (Värde1 Värde2) DO SET Variable=%%G
ECHO %Variable%
Här kommer
`%Variable%`behåll värdet
"startvärde" eftersom
`SET`-Instruktion i en separat
`FOR`loop exekveras.
3.
Mellanslag i sökvägar eller filnamn: Om sökvägar eller filnamn innehåller mellanslag, bör sökvägen eller filnamnet omges av citattecken för att säkerställa att de tolkas korrekt.
FOR %%G IN ("Katalog med mellanslag\Arkiv med mellanslag.txt") DO ECHO %%G
4.
Alternativ för`FOR /F`-Loop: Om du
`FOR`i samband med
`/F`alternativ (t.ex.
`FOR /F "tokens=*" %%G IN (fil.txt) DO ECHO %%G`), måste du känna till syntaxen för
`tokens`och
`delims`Justera alternativen noggrant för att få önskat resultat.
5.
Inkapslade loopar: Med kapslade loopar måste du säkerställa korrekt användning av
`%`eller
`%%`var uppmärksam för att säkerställa att variablerna refereras i rätt loop.
FOR %%G IN (1 2) DO (
ECHO Yttre slinga: %%G
FOR %%H IN (A B) DO ECHO Inre slinga: %%H
)
6.
Slutet av filrader in`FOR /F`: Om du
`FOR /F`för att iterera över rader i en fil anses varje rad upp till det första mellanslag eller tabb som standard vara en token. Du kan göra detta med alternativet
`delims`justera.
FOR /F "tokens=* delims=" %%G IN (fil.txt) DO ECHO %%G
7.
Variabelalternativ för datum och tid: Om du har
`%DATE%`- eller
`%TIME%`-Variabler i ett
`FOR`-Loop, du bör vara uppmärksam på den regionala inställningen av systemet, eftersom formatet kan variera.
8.
Iterera genom filer med UTF-8-kodning: The
`FOR /F`kommandot kan ha svårt att iterera genom filer med UTF-8-kodning. I sådana fall kan det vara bättre att använda andra verktyg som
`FINDSTR`att använda.
Det är viktigt att överväga de specifika kraven för ditt användningsfall och
`FOR`-Justera slingan därefter. Du kan
`FOR /?`i kommandotolken för att se fullständig hjälp och alla tillgängliga alternativ.