Kommandoen: "FOR" er på Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. tilgjengelig
Eksemplene for kommandoen "FOR"
De
`FOR`kommando i Windows Ledetekst brukes til å gå i batchfiler. Her er noen eksempler:
Eksempel 1: Gå gjennom filer i en katalog:
FOR %G IN (katalog\*) DO ECHO %G
Beskrivelse: Denne kommandoen skriver ut navnet på hver fil i den angitte katalogen.
Eksempel 2: Gå gjennom filer med en bestemt filtype:
FOR %G IN (katalog\*.txt) DO ECHO %G
Beskrivelse: Skriver ut navnet på hver tekstfil i den angitte katalogen.
Eksempel 3: Iterering gjennom filer rekursivt i underkataloger:
FOR /R katalog %G IN (*.txt) DO ECHO %G
Beskrivelse: Går rekursivt gjennom alle underkataloger i den angitte katalogen og skriver ut navnet på hver tekstfil.
Eksempel 4: Gå gjennom tall i et spesifikt område:
FOR /L %G IN (1,1,10) DO ECHO %G
Beskrivelse: Sender ut tallene fra 1 til 10.
Eksempel 5: Å gå gjennom tegn i en streng:
FOR %G IN ("Hallo") DO ECHO %G
Beskrivelse: Skriver ut hver bokstav i ordet
"Hei".
Eksempel 6: Gå gjennom filinnholdet linje for linje:
FOR /F "tokens=*" %G IN (fil.txt) DO ECHO %G
Beskrivelse: Itererer gjennom linjene i filen
"File.txt" og sender ut hver linje.
Eksempel 7: Iterering gjennom miljøvariabler:
FOR %G IN (%PATH%) DO ECHO %G
Beskrivelse: Itererer gjennom banene i miljøvariabelen
`PATH`og gir ut hver sti.
Eksempel 8: Bruk av`SET`i en løkke:
FOR %G IN (1 2 3) DO SET /A Antall=%G * 2 & ECHO Dobbelt av %G er %Antall%
Beskrivelse: Angir en variabel
`Antall`til to ganger gjeldende nummer i sløyfen og skriver ut dette.
Eksempel 9: Iterering gjennom underkataloger og filer:
FOR /R %G IN (*) DO ECHO %G
Beskrivelse: Går rekursivt gjennom alle underkataloger og filer i gjeldende katalog.
Eksempel 10: Nestede løkker:
FOR %G IN (1 2) DO FOR %H IN (A B) DO ECHO %G%H
Beskrivelse: Nester to løkker og skriver ut alle kombinasjoner av %G og %H.
Vær oppmerksom på at i batch-filer
`%`gjennom
`%%`bør erstattes. For eksempel:
`FOR %G IN (...) DO ECHO %%G`. Bare ett prosenttegn brukes i den direkte ledeteksten (
`%`).
"FOR" Utdrag fra Microsoft Windows Hjelp
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Kjører en angitt kommando på hver enkelt fil i en gruppe med
filer.
FOR %variabel IN (sett) DO kommando [kommandoparametere]
%variabel Angir en en-bokstavsparameter som kan erstattes.
(sett) Angir en gruppe med en eller flere filer.
Jokertegn er tillatt.
kommando Angir kommandoen som skal brukes for hver enkelt
fil.
kommandoparametere
Angir parameterne eller bryterne for angitt
kommando.
Hvis du vil bruke FOR-kommandoen i en satsvis fil, angir du
%%variabel
i stedet for %variabel. Variabelnavn skiller mellom store og små
bokstaver,
så %i er forskjellig fra %I
Hvis kommandoutvidelser er aktivert, vil følgende tilleggsformer
av FOR-kommandoen støttes:
FOR /D %variabel IN (sett) DO kommando [kommandoparametere]
Hvis settet inneholder jokertegn, vil det bli satt til å
gi treff på mappenavn i stedet for filnavn.
FOR /R [[stasjon:]bane] %variabel IN (sett) DO kommando
[kommandoparametere]
Går igjennom mappetreet med rot [stasjon:]bane, og utfører
FOR-setningen
i hver mappe i treet. Hvis ingen mappespesifikasjon er
angitt
etter /R, antas gjeldende mappe.
Hvis settet bare inneholder et punktum (.), vil det bare
telle opp
mappetreet.
FOR /L %variabel IN (start,steg,slutt) DO kommando
[kommandoparametere]
Settet er en sekvens av tall fra start til slutt, med angitt
steg.
For eksempel vil (1,1,5) generere sekvensen 1 2 3 4 5 og (5,-
1,1)
vil generere sekvensen (5 4 3 2 1).
FOR /F ["altern."] %variabel IN (filsett) DO kommando
[kommandoparametere]
FOR /F ["altern."] %variabel IN ("streng") DO kommando
[kommandoparametere]
FOR /F ["altern."] %variabel IN ('kommando') DO kommando
[kommandoparametere]
eller hvis alternativet usebackq finnes:
FOR /F ["altern."] %variabel IN (filsett) DO kommando
[kommandoparametere]
FOR /F ["altern."] %variabel IN ('streng') DO kommando
[kommandoparametere]
FOR /F ["altern."] %variabel IN (`kommando`) DO kommando
[kommandoparametere]
Filsett er ett eller flere filnavn. Hver fil åpnes, leses og
behandles
før neste fil i filsettet påbegynnes. Behandlingen omfatter
lesing av
filen, oppdeling i separate tekstlinjer, og deretter
nedbryting av hver
enkelt linje til null eller flere tokener. Innholdet i FOR-
løkken kalles
deretter med variabelverdiene satt til tokenstrengene som ble
funnet.
Som standard sender /F det første tokenet atskilt med
mellomrom fra hver
linje i hver fil. Tomme linjer ignoreres. Du kan overstyre
standard-
analyseringsmåten ved å angi den valgfrie parameteren
"altern.". Dette er
en streng mellom anførselstegn, som inneholder en eller flere
nøkkelord
for å angi forskjellige analyseringsparametere. Nøkkelordene
er:
eol=c - Angir et kommentartegn for linjeslutt
(bare ett)
skip=n - Angir antall linjer som skal hoppes
over i
begynnelsen av filen.
delims=xxx - Angir et avgrensningssett. Dette
erstatter standard
avgrensningssett som er mellomrom og
tabulator.
tokens=x,y,m-n - Angir hvilke tokener fra hver linje som
skal sendes
til FOR-innholdet for hver gjentakelse.
Dette
medfører at flere variabelnavn blir
tildelt.
M-n angir et intervall fra token nr. m
til og med n.
Hvis det siste tegnet i "tokens="-
strengen er en
stjerne (*), tildeles en ekstra
variabel som mottar
resten av teksten på linjen etter det
sist analy-
serte tokenet.
usebackq - Angir at ny semantikk gjelder, hvor en
steng som er
omsluttet av grave aksenter (`), kjøres
som en kom-
mando, og strenger omsluttet av enkle
anførselstegn,
er en litteralstrengkommando, og
tillater bruk av
doble anførselstegn for filnavn i
filnavnsett.
Noen eksempler som kan hjelpe:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo
%i %j %k
Dette analyserer hver linje i Myfile.txt, ignorerer linjer
som begynner
med et semikolon, sender 2. og 3. token fra hver linje til
FOR-innholdet,
med tokenene atskilt med komma og/eller mellomrom. Legg merke
til FOR-
innholdets referanse %i for å hente 2. token, %j for å hente
3. token,
og %k for å hente alle resterende tokener etter den 3.
Filnavn som inne-
holder mellomrom må omsluttes med doble anførselstegn (").
For å kunne
bruke doble anførselstegn på denne måten, må du også bruke
alternativet
usebackq, ellers vil de doble anførselstegnene tolkes som en
definisjon
av en litteralstreng som skal analyseres.
%i deklareres eksplisitt i FOR-setningen, og %j og %k
klareres
implisitt gjennom alternativet "tokens=". Du kan angi opptil
26 tokener
ved hjelp av "tokens="-linjen, forutsatt at det ikke prøver å
deklarere
en variabel som er høyere enn bokstaven "z" eller "Z". Husk
at FOR-
variabelnavn har én bokstav, skiller mellom store og små
bokstaver, er
globale, og at du ikke kan ha mer en 52 av dem aktive
samtidig.
Du kan også bruke analyselogikken FOR /F på en umiddelbar
streng, ved å
omslutte filnavnsettet mellom parentesene med enkle
anførselstegn. Den
vil bli behandlet som en enkelt inndatalinje fra en fil, og
analysert.
Du kan bruke FOR /F-kommandoen til å analysere utdata fra en
kommando.
Dette gjøres ved å omslutte filnavnsettet mellom parentesene
med gravis-
aksenter (`). Den vil bli behandlet som en kommandolinje, som
deretter
sendes til en underordnet Cmd.exe, og utdata lagres i minnet
og analyseres
som om det var en fil. Eksempel:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
Dette vil liste opp miljøvariabelnavnene i gjeldende miljø.
Erstatting av FOR-variabelreferanser er også forbedret. Du kan nå
bruke
følgende valgfrie syntaks:
%~I - Utvider %I, og fjerner omsluttende
anførselstegn (").
%~fI - Utvider %I til et fullstendig banenavn.
%~dI - Utvider %I til bare en stasjonsbokstav.
%~pI - Utvider %I bare til en bane.
%~nI - Utvider %I bare til et filnavn.
%~xI - Utvider %I bare til en filtype.
%~sI - Utvidet bane inneholder bare korte navn.
%~aI - Utvider %I til filens filattributter.
%~tI - Utvider %I til filens dato/klokkeslett.
%~zI - Utvider %I til filens størrelse.
%~$PATH:I - Søker gjennom mappene som er listet opp i
miljø-
variabelen PATH, og utvider %I til det
fullstendige
navnet på den første filen som blir funnet.
Hvis
miljøvariabelen ikke er definert, eller hvis
filen
ikke finnes, utvider denne modifikatoren til
den
tomme strengen.
Modifikatorene kan kombineres for å få sammensatte resultater:
%~dpI - Utvider %I bare til en stasjonsbokstav og bane.
%~nxI - Utvider %I bare til filnavn og -etternavn.
%~fsI - Utvider %I til et fullt banenavn bare med korte
navn.
%~dp$PATH:I - Søker gjennom mappene som er listet opp i
miljø-
variabelen PATH etter %I, og utvider til
stasjons-
bokstaven og banen til den første filen som
blir
funnet.
%~ftzaI - Utvider %I til en DIR-lignende utdatalinje
I eksemplene ovenfor kan %I og PATH erstattes av andre gyldige
verdier.
Syntaksen %~ termineres med et gyldig FOR-variabelnavn. Hvis du
bruker
variabelnavn med store bokstaver som %I, blir det mer lesbart, og
du
unngår forvekslinger med modifikatorene, som ikke skiller mellom
store
og små bokstaver.
Viktig informasjon, tips for "FOR"-kommandoen
Når du bruker
`FOR`kommandoen i Windows-ledeteksten, er det noen viktige punkter å merke seg:
1.
Syntaks i batchfiler: Hvis du har
`FOR`kommando i en batchfil, må du
`%`gjennom
`%%`erstatning. For eksempel:
`FOR %%G IN (...) DO ECHO %%G`.
2.
Bruk av variabler: Vanligvis bruker du variabler (f.eks.
`%%G`) i
`FOR`-Loop for å lagre verdier. Merk at variablene ikke kan få tilgang til de tildelte verdiene utenfor løkken.
SET Variable=Opprinnelig verdi
FOR %%G IN (Verdi1 Verdi2) DO SET Variable=%%G
ECHO %Variable%
Her vil
`%Variable%`behold verdien
"startverdi" fordi
`SET`-Instruksjon i en egen
`FOR`loop utføres.
3.
Mellomrom i baner eller filnavn: Hvis stier eller filnavn inneholder mellomrom, bør banen eller filnavnet omsluttes av anførselstegn for å sikre at de tolkes riktig.
FOR %%G IN ("Katalog med mellomrom\Fil med mellomrom.txt") DO ECHO %%G
4.
Alternativer for`FOR /F`-Loop: Hvis du
`FOR`i forbindelse med
`/F`alternativ (f.eks.
`FOR /F "tokens=*" %%G IN (fil.txt) DO ECHO %%G`), må du kjenne syntaksen for
`tokens`og
`delims`Juster alternativene nøye for å få ønskede resultater.
5.
Nestede løkker: Med nestede løkker må du sørge for riktig bruk av
`%`eller
`%%`vær oppmerksom for å sikre at variablene refereres i riktig sløyfe.
FOR %%G IN (1 2) DO (
ECHO Ytre løkke: %%G
FOR %%H IN (A B) DO ECHO Indre løkke: %%H
)
6.
Enden av fillinjer inn`FOR /F`: Hvis du
`FOR /F`for å iterere over linjer i en fil, regnes som standard hver linje opp til første mellomrom eller tabulator som et symbol. Du kan gjøre dette med alternativet
`delims`justere.
FOR /F "tokens=* delims=" %%G IN (fil.txt) DO ECHO %%G
7.
Alternativer for dato og klokkeslett: Hvis du har
`%DATE%`- eller
`%TIME%`- Variabler i ett
`FOR`-Loop, du bør være oppmerksom på den regionale innstillingen av systemet, da formatet kan variere.
8.
Iterering gjennom filer med UTF-8-koding: The
`FOR /F`kommandoen kan ha problemer med å iterere gjennom filer med UTF-8-koding. I slike tilfeller kan det være bedre å bruke andre verktøy som
`FINDSTR`å bruke.
Det er viktig å vurdere de spesifikke kravene til brukssaken din og
`FOR`-Juster løkken deretter. Du kan
`FOR /?`i ledeteksten for å se full hjelp og alle tilgjengelige alternativer.