Kommandoen: "FOR" er tændt Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. tilgængelig
Eksempler på kommandoen "FOR"
Det
`FOR`kommando i Windows Kommandoprompt bruges til at sløjfe i batchfiler. Her er nogle eksempler:
Eksempel 1: Gennemgang af filer i en mappe:
FOR %G IN (vejviser\*) DO ECHO %G
Beskrivelse: Denne kommando udskriver navnet på hver fil i den angivne mappe.
Eksempel 2: Gennemgang af filer med en bestemt filtypenavn:
FOR %G IN (vejviser\*.txt) DO ECHO %G
Beskrivelse: Udskriver navnet på hver tekstfil i den angivne mappe.
Eksempel 3: Gentagelse af filer rekursivt i undermapper:
FOR /R vejviser %G IN (*.txt) DO ECHO %G
Beskrivelse: Gennemløber rekursivt alle undermapper i den angivne mappe og udskriver navnet på hver tekstfil.
Eksempel 4: Gennemgang af tal i et specifikt område:
FOR /L %G IN (1,1,10) DO ECHO %G
Beskrivelse: Udskriver tallene fra 1 til 10.
Eksempel 5: Gennemgang af tegn i en streng:
FOR %G IN ("Hej") DO ECHO %G
Beskrivelse: Udskriver hvert bogstav i ordet
"Hej".
Eksempel 6: Gennemgang af filindhold linje for linje:
FOR /F "tokens=*" %G IN (fil.txt) DO ECHO %G
Beskrivelse: Gentager linjerne i filen
"File.txt" og udskriver hver linje.
Eksempel 7: Iteration gennem miljøvariabler:
FOR %G IN (%PATH%) DO ECHO %G
Beskrivelse: Itererer gennem stierne i miljøvariablen
`PATH`og udsender hver vej.
Eksempel 8: Brug af`SET`i en løkke:
FOR %G IN (1 2 3) DO SET /A Nummer=%G * 2 & ECHO Dobbelt af %G er %Nummer%
Beskrivelse: Indstiller en variabel
`Nummer`til det dobbelte af det aktuelle tal i løkken og udskriver dette.
Eksempel 9: Iteration gennem undermapper og filer:
FOR /R %G IN (*) DO ECHO %G
Beskrivelse: Gennemløber rekursivt alle undermapper og filer i den aktuelle mappe.
Eksempel 10: Indlejrede løkker:
FOR %G IN (1 2) DO FOR %H IN (A B) DO ECHO %G%H
Beskrivelse: Indlejrer to løkker og udskriver alle kombinationer af %G og %H.
Bemærk venligst, at i batch-filer
`%`igennem
`%%`bør udskiftes. For eksempel:
`FOR %G IN (...) DO ECHO %%G`. Kun et procenttegn bruges i den direkte prompt (
`%`).
"FOR" Uddrag fra Microsoft Windows Hjælp
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Udfører en angivet kommando for hver fil i en mængde af filer.
FOR %variabel IN (mængde) DO kommando [kommandoparametre]
%variabel Angiver en parameter på et bogstav, som kan
erstattes.
(mængde) Angiver en mængde af en eller flere filer.\n
Jokertegn kan anvendes.
kommando Angiver den kommando, som skal udføres for hver
fil.
kommandoparametre
Angiver parametre til den angivne kommando.
Ved brug af FOR-kommandoen i et batchprogram angives %%variabel i
stedet for
%variabel. Variabelnavne er følsomme over for store og små
bogstaver,
%i er derfor forskellig fra %I
Hvis kommandoudvidelserne er aktiveret, understøttes følgende
yderligere varianter af kommandoen FOR:
FOR /D %variabel IN (filsæt) DO kommando [kommandoparametre]
Hvis det angivne filsæt indeholder jokertegn, behandles
mappenavne
i stedet for filnavne.
FOR /R [[drev:]sti] %variabel IN (filsæt) DO kommando
[kommandoparametre]
Gennemgår mappetræet med roden [drev:]sti og udfører
sætningen FOR
i alle træets mapper. Hvis der ikke er angivet en mappe efter
/R,
tages der udgangspunkt i den aktuelle mappe. Hvis sættet kun
er ét
enkelt punktum (.), optælles kun mappetræet.
FOR /L %variabel IN (start,step,slut) DO kommando
[kommandoparametre]
Sættet er en talsekvens fra start til slut med en
trinstørrelse.
(1,1,5) giver således sekvensen 1 2 3 4 5, og (5,-1,1) giver
sekvensen (5 4 3 2 1)
FOR /F ["indstillingsstreng"] %variabel IN (filsæt) DO kommando
[kommandoparametre]
FOR /F ["indstillingsstreng"] %variabel IN ("streng") DO kommando
[kommandoparametre]
FOR /F ["indstillingsstreng"] %variabel IN ('kommando') DO
kommando
[kommandoparametre]
eller, hvis indstillingen usebackq er til stede:
FOR /F ["indstillingsstreng"] %variabel IN (filsæt) DO kommando
[kommandoparametre]
FOR /F ["indstillingsstreng"] %variabel IN ('streng') DO kommando
[kommandoparametre]
FOR /F ["indstillingsstreng"] %variabel IN (`kommando`) DO
kommando
[kommandoparametre]
filnavnsæt er et eller flere filnavne. Hver fil åbnes, læses
og
behandles, inden der fortsættes til næste fil i
filnavnsættet.
Behandlingen består af at læse i filen, bryde den op i
individuelle
tekstlinjer og derefter fortolke hver linje til nul eller
flere
tokens. Derefter kaldes indholdet af FOR-løkken med
variabelværdi(er)
sat til den eller de fundne tokenstrenge. Som standard
videregiver
/F den første, tomme udskilte token fra hver linje i hver
fil. Tomme
linjer springes over. Du kan tilsidesætte
standardfortolkningen
ved at angive den valgfrie "indstillingsstreng"-parameter.
Strengen
skal angives i anførselstegn, og den indeholder et eller
flere
nøgleord, der angiver forskellige fortolkningsindstillinger.
Nøgleordene er:
eol=c - angiver linjeafslutningstegn (kun et)
skip=n - angiver, hvor mange linjer der skal
springes over
i starten af filen.
delims=xxx - angiver et afgrænsningssæt. Det
erstatter
standardafgrænsningssættet bestående af
mellemrum
og tabulatortegn.
tokens=x,y,m-n - angiver, hvilke tokens fra hver linje
der skal
overgives til FOR-indholdet for hver
gentagelse.
Dette medfører, at der tildeles flere
variabelnavne. m-n er et område, der
angiver den
m'te til n'te token. Hvis det sidste
tegn i
strengen tokens= er en stjerne,
tildeles der
yderligere en variabel, som modtager
den
resterende tekst på linjen efter den
token,
der blev fortolket sidst.
usebackq - angiver, at der gælder nye regler, når
en streng i
omvendte anførselstegn udføres som en
kommando,
og en streng i enkelte anførselstegn er
en
konstantstrengkommando, samt tillader
brugen af
dobbelte anførselstegn til at anbringe
filnavne i
anførselstegn i filnavnsæt.
Eksempler:
FOR /F "eol=; tokens=2,3* delims=, " %i in (minfil.txt) do @echo
%i %j %k
sætningen analyserer alle linjer i minfil.txt, ignorerer
linjer, der
begynder med et semikolon, sender anden og tredje token fra
hver linje
til FOR-indholdet, med tokens adskilt af kommaer og/eller
mellemrum.
Bemærk henvisningen til FOR-sætningen %i, der henter andet
token,
%j, der henter tredje token, og %k, der henter alle
resterende tokens
efter det tredje. Filnavne, der indeholder mellemrum, skal
sættes i
dobbelte anførselstegn. Hvis du vil bruge dobbelte
anførselstegn på
denne måde, skal du også bruge indstillingen usebackq, ellers
fortolkes dobbelte anførselstegn som en definition af en
konstantstreng,
der skal analyseres.
%i erklæres eksplicit i FOR-sætningen, og %j og %k erklæres
implicit
via indstillingen tokens=. Du kan angive op til 26 tokens via
linjen
tokens=, forudsat det ikke medfører et forsøg på at erklære
en variabel,
der er højere end bogstavet 'z' eller 'Z'. Husk, at der er
forskel på
store og små bogstaver i FOR-variabler, de er globale, på et
bogstav,
og der må højst være 52 aktive på én gang.
Du kan bruge analyselogikken FOR /F på en midlertidig streng
ved at
gøre filnavnsættet, der står i parentes, til en streng i
anførselstegn
ved at anvende enkelte anførselstegn. Den behandles som én
enkelt linjes
input fra en fil og analyseres.
Endelig kan du anvende kommandoen FOR /F til at analysere
outputtet
fra en kommando. Dette gøres ved at ændre filnavnsættet i
parentes
til en streng i omvendte anførselstegn. Den behandles som en
kommandolinje, der videregives til en underordnet CMD.EXE, og
outputtet anbringes i hukommelsen og analyseres, som var det
en fil.
I følgende eksempel:
FOR /F "usebackq delims==" %i IN (`filsæt`) DO @echo %i
optælles miljøvariabelnavnene i det aktuelle miljø.
Desuden er erstatningen af FOR-variabelhenvisningerne udvidet.
Du kan nu bruge følgende valgfrie syntaks:
%~I - udvider %I og fjerner omgivende anførselstegn
(")
%~fI - udvider %I til et fuldt kvalificeret stinavn
%~dI - udvider %I til kun at omfatte et drevbogstav
%~pI - udvider %I til kun at omfatte en sti
%~nI - udvider %I til kun at omfatte et filnavn
%~xI - udvider %I til kun at omfatte et filtypenavn
%~sI - den udvidede sti indeholder kun korte navne
%~aI - udvider %I til filens filattributter
%~tI - udvider %I til filens dato/klokkeslæt
%~zI - udvider %I til filens størrelse
%~$PATH:I - søger i mapperne angivet i miljøvariablen PATH
og udvider %I til det fuldt kvalificerede navn
på den første, der findes. Hvis miljøvariabel-
navnet ikke er angivet, eller filen ikke
findes
under søgningen, udvides denne modifikator til
den tomme streng
Modifikatorerne kan kombineres, så der opnås sammensatte
resultater:
%~dpI - udvider %I til kun at omfatte et drevbogstav
og en sti
%~nxI - udvider %I til kun at omfatte et filnavn
og et filtypenavn
%~fsI - udvider %I til kun at omfatte et fuldt stinavn
med korte navne
%~dp$PATH:i - søger i mapper angivet i miljøvariablen PATH
for %I og udvider til drevbogstavet og stien
på den første, der findes.
%~ftzaI - udvider %I til en DIR-lignende outputlinje
I ovennævnte eksempler kan %I og PATH erstattes af andre gyldige
værdier. Syntaksen %~ afsluttes af et gyldigt FOR-variabelnavn.
Ved at vælge variabelnavne med store bogstaver, f.eks. %I, øges
læsbarheden, og der undgås forvekslinger med modifikatorerne,
hvor
der ikke er forskel på store og små bogstaver.
Vigtig information, tip til kommandoen "FOR"
Ved brug af
`FOR`kommando i Windows kommandoprompt, er der et par vigtige punkter at bemærke:
1.
Syntaks i batchfiler: Hvis du har
`FOR`kommando i en batch-fil, skal du
`%`igennem
`%%`erstatning. For eksempel:
`FOR %%G IN (...) DO ECHO %%G`.
2.
Brug af variabler: Typisk bruger du variabler (f.eks.
`%%G`) i
`FOR`-Loop for at gemme værdier. Bemærk, at variablerne ikke kan få adgang til de tildelte værdier uden for løkken.
SET Variable=Startværdi
FOR %%G IN (Værdi1 Værdi2) DO SET Variable=%%G
ECHO %Variable%
Her vil
`%Variable%`behold værdien
"startværdi", fordi
`SET`-Instruktion i en separat
`FOR`loop udføres.
3.
Mellemrum i stier eller filnavne: Hvis stier eller filnavne indeholder mellemrum, skal stien eller filnavnet være omgivet af anførselstegn for at sikre, at de fortolkes korrekt.
FOR %%G IN ("Vejviser med mellemrum\Fil med mellemrum.txt") DO ECHO %%G
4.
Muligheder for`FOR /F`-Loop: Hvis du
`FOR`i forbindelse med
`/F`mulighed (f.eks.
`FOR /F "tokens=*" %%G IN (fil.txt) DO ECHO %%G`), skal du kende syntaksen for
`tokens`og
`delims`Juster indstillingerne omhyggeligt for at få de ønskede resultater.
5.
Indlejrede løkker: Med indlejrede løkker skal du sikre korrekt brug af
`%`eller
`%%`vær opmærksom på at sikre, at variablerne refereres i den korrekte løkke.
FOR %%G IN (1 2) DO (
ECHO Ydre sløjfe: %%G
FOR %%H IN (A B) DO ECHO Indre sløjfe: %%H
)
6.
Slutningen af fillinjer ind`FOR /F`: Hvis du
`FOR /F`for at iterere over linjer i en fil, betragtes som standard hver linje op til det første mellemrum eller tabulator som et symbol. Du kan gøre dette med muligheden
`delims`justere.
FOR /F "tokens=* delims=" %%G IN (fil.txt) DO ECHO %%G
7.
Dato- og tidsvariable muligheder: Hvis du har
`%DATE%`- eller
`%TIME%`- Variabler i én
`FOR`-Loop, du bør være opmærksom på den regionale indstilling af systemet, da formatet kan variere.
8.
Generering af filer med UTF-8-kodning: Den
`FOR /F`kommandoen kan have svært ved at gentage filer med UTF-8-kodning. I sådanne tilfælde kan det være bedre at bruge andre værktøjer som f.eks
`FINDSTR`at bruge.
Det er vigtigt at overveje de specifikke krav til din use case og
`FOR`- Juster løkken i overensstemmelse hermed. Du kan
`FOR /?`i kommandoprompten for at se fuld hjælp og alle tilgængelige muligheder.