Het commando: "FOR" staat aan Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. beschikbaar
De voorbeelden voor het commando "FOR"
De
`FOR`opdracht in de Windows-opdrachtprompt wordt gebruikt om batchbestanden in een lus te plaatsen. Hier zijn enkele voorbeelden:
Voorbeeld 1: Door bestanden in een map bladeren:
FOR %G IN (map\*) DO ECHO %G
Beschrijving: Met deze opdracht wordt de naam van elk bestand in de opgegeven map afgedrukt.
Voorbeeld 2: Door bestanden bladeren met een specifieke bestandsextensie:
FOR %G IN (map\*.txt) DO ECHO %G
Beschrijving: Drukt de naam af van elk tekstbestand in de opgegeven map.
Voorbeeld 3: Recursief door bestanden bladeren in submappen:
FOR /R map %G IN (*.txt) DO ECHO %G
Beschrijving: Doorloopt recursief alle submappen van de opgegeven map en drukt de naam van elk tekstbestand af.
Voorbeeld 4: Door getallen in een specifiek bereik bladeren:
FOR /L %G IN (1,1,10) DO ECHO %G
Beschrijving: Voert de cijfers van 1 tot 10 uit.
Voorbeeld 5: Door tekens in een string bladeren:
FOR %G IN ("Hallo") DO ECHO %G
Beschrijving: Drukt elke letter van het woord
"Hallo" af.
Voorbeeld 6: Regel voor regel door de bestandsinhoud bladeren:
FOR /F "tokens=*" %G IN (bestand.txt) DO ECHO %G
Beschrijving: Doorloopt de regels van het bestand
"File.txt" en voert elke regel uit.
Voorbeeld 7: Itereren door omgevingsvariabelen:
FOR %G IN (%PATH%) DO ECHO %G
Beschrijving: Doorloopt de paden in de omgevingsvariabele
`PATH`en voert elk pad uit.
Voorbeeld 8: Gebruik van`SET`in een lus:
FOR %G IN (1 2 3) DO SET /A Nummer=%G * 2 & ECHO Dubbel van %G is %Nummer%
Beschrijving: Stelt een variabele in
`Nummer`naar tweemaal het huidige nummer in de lus en drukt dit af.
Voorbeeld 9: Door submappen en bestanden bladeren:
FOR /R %G IN (*) DO ECHO %G
Beschrijving: Doorloopt recursief alle submappen en bestanden in de huidige map.
Voorbeeld 10: Geneste lussen:
FOR %G IN (1 2) DO FOR %H IN (A B) DO ECHO %G%H
Beschrijving: Nestt twee lussen en drukt alle combinaties van %G en %H af.
Houd er rekening mee dat dit in batchbestanden is
`%`door
`%%`moet worden vervangen. Bijvoorbeeld:
`FOR %G IN (...) DO ECHO %%G`. Er wordt slechts één procentteken gebruikt in de directe prompt (
`%`).
"FOR" Fragment uit Microsoft Windows Help
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Een opgegeven opdracht uitvoeren voor elk bestand in een set
bestanden.
FOR %variable IN (set) DO opdracht [opdrachtparameters]
%variable Bepaalt een vervangbare parameter van één letter.
(set) Bepaalt een set van één of meer bestanden.
Jokertekens kunnen
worden gebruikt.
opdracht Bepaalt de opdracht die moet worden uitgevoerd voor
elk bestand.
opdrachtparameters
Bepaalt de opties of parameters voor de opgegeven
opdracht.
Als u de opdracht FOR in een batchprogramma wilt gebruiken, moet
u
%%variable opgeven in plaats van %variable. Variabele-namen maken
onderscheid tussen hoofd- en kleine letters, dus %i is iets
anders dan %I.
Als opdrachtextensies zijn ingeschakeld, worden de volgende extra
opties van de opdracht FOR ondersteund:
FOR /D %variable IN (set) DO opdracht [opdrachtparameters]
Als de set jokertekens bevat, moeten overeenkomsten worden
gezocht
in mapnamen in plaats van bestandsnamen.
FOR /R [[station:]pad] %variable IN (set) DO opdracht
[opdrachtparameters]
Loopt door de mapstructuur, beginnend bij [station:]pad,
waarbij de
opdracht FOR wordt uitgevoerd in elke map van de structuur.
Als geen
mapspecificatie is opgegeven na /R wordt aangenomen dat het
om de
actieve map gaat. Als alleen een punt (.) is ingesteld, wordt
alleen
de mapstructuur weergegeven.
FOR /L %variable IN (start,step,end) DO opdracht
[opdrachtparameters]
De set is een volgorde van nummers van begin tot einde, in
stapgrootte.
Dus (1,1,5) genereert de volgorde 1 2 3 4 5 en (5,-1,1)
genereert
de volgorde 5 4 3 2 1.
FOR /F ["opties"] %variable IN (bestandsset) DO opdracht
[opdrachtparameters]
FOR /F ["opties"] %variable IN ("tekenreeks") DO opdracht
[opdrachtparam.]
FOR /F ["opties"] %variable IN ("opdracht") DO opdracht
[opdrachtparameters]
of, als optie usebackq aanwezig is:
FOR /F ["opties"] %variable IN (bestandsset) DO opdracht
[opdrachtparameters]
FOR /F ["opties"] %variable IN ('tekenreeks') DO opdracht
[opdrachtparam.]
FOR /F ["opties"] %variable IN (`opdracht`) DO opdracht
[opdrachtparameters]
bestandsnaamset zijn één of meer bestandsnamen. Elk bestand
wordt
geopend, gelezen en verwerkt voordat het volgende bestand in
de
bestandsnaamset wordt geopend. Verwerking houdt in het lezen
in het
bestand, het indelen in afzonderlijke tekstregels en daarna
het parseren
van elke regel in nul of meer onderdelen. De tekst van de
FOR-lus wordt
vervolgens aangeroepen met de variabele-waarde(n) die zijn
ingesteld op
de gevonden token-tekenreeks(en). Standaard zal met /F de
eerste token
worden overgeslagen, die wordt gescheiden door een spatie.
Lege regels
worden overgeslagen. U kunt het standaard-parseergedrag
onderdrukken door
de optionele parameter 'opties' op te geven. Dit is een
tekenreeks tussen
aanhalingstekens die één of meer trefwoorden bevat om
verschillende
parseeropties te bepalen. De trefwoorden zijn:
eol=c - bepaalt een einde-regelopmerkingteken
(slechts één)
skip=n - bepaalt het aantal regels dat wordt
overgeslagen
aan het begin van het bestand.
delims=xxx - bepaalt een set scheidingstekens. Dit
vervangt de
standaardset scheidingstekens van
spatie en tab.
tokens=x,y,m-n - bepaalt welke tokens van elke regel
worden
doorgegeven aan de FOR-tekst voor elke
iteratie.
Hierdoor worden extra variabele-namen
toegewezen.
De vorm m-n is een bereik, waarmee de
m-de t/m
de n-de tokens worden bepaald. Als het
laatste
teken in de tekenreeks tokens= een
sterretje is,
wordt een extra variabele toegewezen en
wordt de
resterende tekst ontvangen op de regel
na de
laatste geparseerde token.
usebackq - bepaalt of de nieuwe semantiek wordt
gebruikt,
waarbij teken (`) wordt uitgevoerd als
een
opdracht en teken (') een letterlijke
tekenreeksopdracht is.
Het gebruik van dubbele
aanhalingstekens wordt
toegestaan om bestandsnamen in de
bestandsnaamset
op te geven.
Enkele voorbeelden:
FOR /F "eol=; tokens=2,3* delims=, " %i in (bestand.txt) do
@echo %i %j %k
verwerkt elke regel in bestand.txt, waarbij regels worden
genegeerd
die beginnen met een puntkomma. Vervolgens worden het tweede
en derde
token van elke regel doorgegeven aan de FOR-tekst, waarbij de
tokens
worden gescheiden door komma's en/of spaties. Opmerking: de
FOR-tekst-
instructies verwijzen naar %i om het tweede token te
verkrijgen, %j
om het derde token te verkrijgen en %k om alle resterende
tokens
na het derde token te verkrijgen. Voor bestandsnamen die
spaties
bevatten, moet u dubbele aanhalingstekens gebruiken. Als u
dubbele
aanhalingstekens op deze manier wilt gebruiken, moet u de
optie
usebackq gebruiken omdat anders de dubbele aanhalingstekens
worden
geïnterpreteerd als een letterlijke tekenreeks om te
verwerken.
%i wordt uitdrukkelijk opgegeven in de FOR-instructie en %j
en %k
worden uitdrukkelijk opgegeven via de optie tokens=. U kunt
maximaal
26 tokens opgeven via de regel tokens=, zolang hierdoor niet
wordt
geprobeerd om een variabele op te geven die hoger is dan de
letter
z of Z. Denk eraan dat FOR-variabele-namen onderscheid maken
tussen
hoofd- en kleine letters, globaal zijn en maar maximaal 52
tegelijk
actief kunnen zijn.
U kunt ook de FOR /F-parseerlogica toepassen op een nabije
teken-
reeks, door van de bestandsnaamset tussen haakjes een
tekenreeks
tussen enkele aanhalingstekens te maken. Deze wordt dan
behandeld als
een enkele invoerregel van een bestand en geparseerd.
Als laatste kunt u de opdracht FOR /F gebruiken om de uitvoer
van een
opdracht te parseren. U kunt dit doen door van de
bestandsnaamset tussen
haakjes een tekenreeks te maken tussen `-aanhalingstekens.
Deze wordt
dan behandeld als een opdrachtregel, die wordt doorgegeven
aan een
child-CMD.EXE en waarvan de uitvoer wordt opgevangen in het
geheugen
en geparseerd alsof het een bestand is. Dus het volgende
voorbeeld:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
geeft een inventarisatie van de namen van omgevingsvariabelen
in de
actieve omgeving.
Verder is de vervanging van verwijzingen naar FOR-variabelen
verbeterd.
U kunt de volgende extra syntaxis gebruiken:
%~I - breidt %I uit waarbij aanhalingstekens (")
worden
verwijderd
%~fI - breidt %I uit naar een fully-qualified-padnaam
%~dI - breidt %I alleen uit naar een stationsletter
%~pI - breidt %I alleen uit naar een pad
%~nI - breidt %I alleen uit naar een bestandsnaam
%~xI - breidt %I alleen uit naar een bestandsextensie
%~sI - uitgebreid pad bevat alleen korte namen
%~aI - breidt %I uit naar bestandskenmerken van
bestand
%~tI - breidt %I uit naar datum/tijd van bestand
%~zI - breidt %I uit naar grootte van bestand
%~$PATH:I - doorzoekt de mappen in omgevingsvariabele PATH
en breidt
%I uit naar de fully-qualified-naam van het
eerste
gevonden bestand. Als de naam van de
omgevingsvariabele
niet is opgegeven of als het bestand niet
wordt gevonden,
wordt deze wijzigingstoets uitgebreid naar de
lege
tekenreeks.
De wijzigingstoetsen kunnen worden gecombineerd om samengestelde
resultaten
te verkrijgen:
%~dpI - breidt %I alleen uit naar een stationsletter en
pad
%~nxI - breidt %I alleen uit naar een bestandsnaam en
extensie
%~fsI - breidt %I alleen uit naar een volledige padnaam
met
korte namen
%~dp$PATH:i - doorzoekt de mappen in omgevingsvariabele PATH
naar %I
en breidt uit naar de stationsletter en het
pad van het
eerste gevonden bestand
%~ftzaI - breidt %I uit naar een op DIR lijkende
uitvoerregel
In bovenstaande voorbeelden kunnen %I en PATH worden vervangen
door andere
geldige waarden. De syntaxis %~ wordt afgesloten door een geldige
FOR-variabele-naam. Als u ervoor kiest om hoofdletters te
gebruiken voor
variabele-namen, zoals %I, wordt het beter leesbaar en minder
verwarrend
als deze worden gebruikt met de wijzigingstoetsen, waarvoor geen
onderscheid
wordt gemaakt tussen hoofd- en kleine letters.
Belangrijke informatie, tips voor het "FOR" commando
Bij gebruik van de
`FOR`opdracht in de Windows-opdrachtprompt, zijn er een paar belangrijke punten waar u rekening mee moet houden:
1.
Syntaxis in batchbestanden: Als u de
`FOR`opdracht in een batchbestand moet u
`%`door
`%%`vervanging. Bijvoorbeeld:
`FOR %%G IN (...) DO ECHO %%G`.
2.
Gebruik van variabelen: Meestal gebruikt u variabelen (bijv.
`%%G`) in de
`FOR`-Loop om waarden op te slaan. Merk op dat de variabelen geen toegang hebben tot de toegewezen waarden buiten de lus.
SET Variable=Beginwaarde
FOR %%G IN (Waarde1 Waarde2) DO SET Variable=%%G
ECHO %Variable%
Hier zal
`%Variable%`behoud de waarde
"beginwaarde" omdat de
`SET`-Instructie in een aparte
`FOR`lus wordt uitgevoerd.
3.
Spaties in paden of bestandsnamen: Als paden of bestandsnamen spaties bevatten, moet het pad of de bestandsnaam tussen aanhalingstekens worden geplaatst om ervoor te zorgen dat ze correct worden geïnterpreteerd.
FOR %%G IN ("Directory met spaties\Bestand met spaties.txt") DO ECHO %%G
4.
Opties voor de`FOR /F`-Loop: Als jij
`FOR`in verband met de
`/F`optie (bijv.
`FOR /F "tokens=*" %%G IN (bestand.txt) DO ECHO %%G`), moet u de syntaxis voor de kennen
`tokens`En
`delims`Pas de opties zorgvuldig aan om de gewenste resultaten te krijgen.
5.
Geneste lussen: Bij geneste lussen moet u zorgen voor het juiste gebruik ervan
`%`of
`%%`let erop dat er in de juiste lus naar de variabelen wordt verwezen.
FOR %%G IN (1 2) DO (
ECHO Buitenste lus: %%G
FOR %%H IN (A B) DO ECHO Binnenste lus: %%H
)
6.
Einde van bestandsregels in`FOR /F`: Als jij
`FOR /F`om regels in een bestand te herhalen, wordt standaard elke regel tot aan de eerste spatie of tab als een token beschouwd. Dit kunt u doen met de optie
`delims`aanpassen.
FOR /F "tokens=* delims=" %%G IN (bestand.txt) DO ECHO %%G
7.
Variabele opties voor datum en tijd: Als u de
`%DATE%`- of
`%TIME%`-Variabelen in één
`FOR`-Loop, let op de regionale instelling van het systeem, aangezien het formaat kan variëren.
8.
Door bestanden bladeren met UTF-8-codering: The
`FOR /F`opdracht kan problemen ondervinden bij het doorlopen van bestanden met UTF-8-codering. In dergelijke gevallen is het misschien beter om andere hulpmiddelen te gebruiken, zoals
`FINDSTR`gebruiken.
Het is belangrijk om rekening te houden met de specifieke vereisten van uw gebruiksscenario en de
`FOR`- Pas de lus dienovereenkomstig aan. Jij kan
`FOR /?`in de opdrachtprompt om volledige hulp en alle beschikbare opties te bekijken.