about_For

簡単な説明

条件付きテストに基づいてステートメントを実行するために使用できる言語コマンドについて説明します。

詳細な説明

Forステートメント (ループとも呼ばれますFor) は、指定された条件が評価される間にコマンド ブロックでコマンドを実行するループを作成するために使用できる言語コンストラクトです$true

ループの For 一般的な用途は、値の配列を反復処理し、これらの値のサブセットを操作することです。 ほとんどの場合、配列内のすべての値を反復処理する場合は、ステートメントの使用を Foreach 検討してください。

構文

ステートメントの構文を次に For 示します。

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

Init プレースホルダーは、ループが開始される前に実行される 1 つ以上のコマンドを表します。 通常、ステートメントの Init 部分を使用して、開始値を使用して変数を作成および初期化します。

この変数は、ステートメントの次の部分でテストされる条件の For 基礎になります。

Condition プレースホルダーは、ステートメントの中でFor、ブール値または$falseブール$true値に解決される部分を表します。 PowerShell は、ループが実行されるたびに条件を For 評価します。 ステートメントが指定されている場合は $true、コマンド ブロック内のコマンドが実行され、ステートメントが再び評価されます。 条件がまだ残っている$true場合は、ステートメントリストのコマンドが再度実行されます。 ループは条件になるまで繰り返されます $false

Repeat プレースホルダーは 、ループが繰り 返されるたびに実行される 1 つ以上のコマンドをコンマで区切って表します。 通常、これは、ステートメントの Condition 部分内でテストされる変数を変更するために使用されます。

ステートメント リスト プレースホルダーは、ループが入力または繰り返されるたびに実行される 1 つ以上のコマンドのセットを表します。 ステートメント リスト内容は中かっこで囲まれています。

複数の操作のサポート

Init ステートメントの複数の割り当て操作では、次の構文がサポートされています。

# Comma separated assignment expressions enclosed in parentheses.
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"
}

Repeat ステートメントの複数の割り当て操作では、次の構文がサポートされています。

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

# Comma separated assignment expressions enclosed in parentheses.
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"
}

Note

事前インクリメントまたは事後インクリメント以外の操作は、すべての構文で機能しない場合があります。

複数 の条件 の場合は、次の例に示すように論理演算子を使用します。

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

詳細については、「about_Logical_Operators」を参照してください

少なくとも、ステートメントには、Forステートメントの Init、ConditionRepeat の一部を囲むかっこと、ステートメントのステートメント リスト部分の中かっこで囲まれたコマンドが必要です。

今後の例では、ステートメントの外側に意図的にコードが For 表示されることに注意してください。 後の例では、コードがステートメントに For 統合されています。

たとえば、次 For のステートメントは、Ctrl キーを押しながら C キーを $i 押してコマンドを手動で中断するまで、変数の値を継続的に表示します。

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

次の例に示すように、ループが実行されるたびに値 $i が 1 ずつインクリメントされるように、ステートメント リストにコマンドを追加できます。

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

Ctrl キーを押しながら C キーを押してコマンドを中断するまで、このステートメントは、ループが実行されるたびに 1 ずつインクリメントされるため、変数の $i 値を継続的に表示します。

ステートメントのステートメント リスト部分Forの変数の値を変更する代わりに、次のようにステートメントの Repeat 部分をFor使用できます。

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

このステートメントは、Ctrl キーを押しながら C キーを押してコマンドから抜け出すまで、無期限に繰り返されます。

条件を使用してループをFor終了できます。 条件は、ステートメントの Condition 部分For使用して配置できます。 条件が For 次の値に評価されると、ループは終了します $false

次の例では、値$iFor 10 以下の間にループが実行されます。

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

ステートメントの外部Forで変数を作成して初期化する代わりに、ステートメントの Init 部分をFor使用してループ内でこのタスクをFor実行できます。

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

セミコロンの代わりに復帰を使用して、ステートメントの Init、ConditionRepeatの部分をFor区切ることができます。 次の例は、この代替構文を For 使用する例を示しています。

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

この別の形式のステートメントは For 、PowerShell スクリプト ファイルと PowerShell コマンド プロンプトで機能します。 ただし、コマンド プロンプトで対話型コマンドを For 入力する場合は、セミコロンでステートメント構文を使用する方が簡単です。

ループは For 、パターンを Foreach 使用して配列またはコレクション内の値をインクリメントできるため、ループよりも柔軟性が高くなります。 次の例では、ステートメントの $i Repeat 部分Forで変数が 2 ずつインクリメントされます。

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

ループは For 、次の例のように 1 行に記述することもできます。

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

関連項目