about_For

Kort beskrivning

Beskriver ett språkkommando som du kan använda för att köra instruktioner baserat på ett villkorstest.

Lång beskrivning

-instruktionen For (kallas även en For loop) är en språkkonstruktion som du kan använda för att skapa en loop som kör kommandon i ett kommandoblock medan ett angivet villkor utvärderas till $true.

En typisk användning av loopen For är att iterera en matris med värden och att arbeta på en delmängd av dessa värden. I de flesta fall bör du överväga att använda en Foreach -instruktion om du vill iterera alla värden i en matris.

Syntax

Följande visar instruktionssyntaxen For .

for (<Init>; <Condition>; <Repeat>)
{
    <Statement list>
}

Platshållaren Init representerar ett eller flera kommandon som körs innan loopen börjar. Du använder vanligtvis Init-delen av -instruktionen för att skapa och initiera en variabel med ett startvärde.

Den här variabeln utgör sedan grunden för villkoret som ska testas i nästa del av -instruktionen For .

Platshållaren Villkor representerar den del av -instruktionen For som matchas till ett eller $falsebooleskt$true värde. PowerShell utvärderar villkoret varje gång loopen For körs. Om -instruktionen är $truekörs kommandona i kommandoblocket och -instruktionen utvärderas igen. Om villkoret fortfarande $trueär körs kommandona i instruktionslistan igen. Loopen upprepas tills villkoret blir $false.

Platshållaren Upprepa representerar ett eller flera kommandon, avgränsade med kommatecken, som körs varje gång loopen upprepas. Detta används vanligtvis för att ändra en variabel som testas i villkorsdelen av -instruktionen.

Platshållaren för instruktionslistan representerar en uppsättning med ett eller flera kommandon som körs varje gång loopen anges eller upprepas. Innehållet i instruktionslistan omges av klammerparenteser.

Stöd för flera åtgärder

Följande syntaxer stöds för flera tilldelningsåtgärder i Init-instruktionen :

# Comma separated assignment expressions enclosed in parenthesis.
for (($i = 0), ($j = 0); $i -lt 10; $i++)
{
    "`$i:$i"
    "`$j:$j"
}

# Sub-expression using the semicolon to separate statements.
for ($($i = 0;$j = 0); $i -lt 10; $i++)
{
    "`$i:$i"
    "`$j:$j"
}

Följande syntaxer stöds för flera tilldelningsåtgärder i instruktionen Upprepa :

# Comma separated assignment expressions.
for (($i = 0), ($j = 0); $i -lt 10; $i++, $j++)
{
    "`$i:$i"
    "`$j:$j"
}

# Comma separated assignment expressions enclosed in parenthesis.
for (($i = 0), ($j = 0); $i -lt 10; ($i++), ($j++))
{
    "`$i:$i"
    "`$j:$j"
}

# Sub-expression using the semicolon to separate statements.
for ($($i = 0;$j = 0); $i -lt 10; $($i++;$j++))
{
    "`$i:$i"
    "`$j:$j"
}

Anteckning

Andra åtgärder än inkrement före eller efter kanske inte fungerar med alla syntaxer.

För flera villkor använder du logiska operatorer, vilket visas i följande exempel.

for (($i = 0), ($j = 0); $i -lt 10 -and $j -lt 10; $i++,$j++)
{
    "`$i:$i"
    "`$j:$j"
}

Mer information finns i about_Logical_Operators.

Exempel

Som minst kräver en For -instruktion parentesen som omger init-, villkors- och upprepa-delen av -instruktionen och ett kommando omgivet av klammerparenteser i instruktionslistans del av -instruktionen.

Observera att de kommande exemplen avsiktligt visar kod utanför -instruktionen For . I senare exempel integreras kod i -instruktionen For .

Följande instruktion visar till exempel For kontinuerligt värdet för variabeln $i tills du manuellt bryter ut från kommandot genom att trycka på CTRL+C.

$i = 1
for (;;)
{
    Write-Host $i
}

Du kan lägga till ytterligare kommandon i instruktionslistan så att värdet $i för ökas med 1 varje gång loopen körs, vilket visas i följande exempel.

for (;;)
{
    $i++; Write-Host $i
}

Tills du bryter ut från kommandot genom att trycka på CTRL + C, visar den här instruktionen kontinuerligt värdet för variabeln $i eftersom den ökas med 1 varje gång loopen körs.

I stället för att ändra värdet för variabeln i instruktionslistans del av -instruktionen For kan du använda upprepa-delen av -instruktionen For i stället, enligt följande.

$i=1
for (;;$i++)
{
    Write-Host $i
}

Den här instruktionen upprepas fortfarande på obestämd tid tills du bryter ut från kommandot genom att trycka på CTRL +C.

Du kan avsluta loopen For med hjälp av ett villkor. Du kan placera ett villkor med hjälp av villkorsdelen av -instruktionen For . Loopen For avslutas när villkoret utvärderas till $false.

I följande exempel körs loopen For medan värdet $i för är mindre än eller lika med 10.

$i=1
for(;$i -le 10;$i++)
{
    Write-Host $i
}

I stället för att skapa och initiera variabeln utanför -instruktionen For kan du utföra den här uppgiften i loopen For med hjälp av Init-delen av -instruktionen For .

for($i=1; $i -le 10; $i++){Write-Host $i}

Du kan använda vagnreturer i stället för semikolon för att avgränsa delarna Init, Condition och Repeat i -instruktionen For . I följande exempel visas en For som använder den här alternativa syntaxen.

for ($i = 0
  $i -lt 10
  $i++){
  $i
}

Den här alternativa formen av -instruktionen For fungerar i PowerShell-skriptfiler och i PowerShell-kommandotolken. Det är dock enklare att använda instruktionssyntaxen For med semikolon när du anger interaktiva kommandon i kommandotolken.

Loopen For är mer flexibel än loopen Foreach eftersom den gör att du kan öka värdena i en matris eller samling med hjälp av mönster. I följande exempel ökas variabeln $i med 2 i upprepad del av -instruktionen For .

for ($i = 0; $i -le 20; $i += 2)
{
    Write-Host $i
}

Loopen For kan också skrivas på en rad som i följande exempel.

for ($i = 0; $i -lt 10; $i++) { Write-Host $i }

Se även