about_For

簡単な説明

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

長い説明

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

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

構文

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

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

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

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

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

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

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

複数の操作のサポート

次の構文は、 Init ステートメントで複数の代入演算に対してサポートされています。

# 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"
}

次の構文は、 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 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"
}

注意

プリインクリメントまたはポストインクリメント以外の操作は、すべての構文で動作しない場合があります。

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

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

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

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

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

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

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

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

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

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

ステートメントのステートメントリストの部分 For で変数の値を変更するのではなく、次のようにステートメントの For 繰り返し 部分を使用できます。

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

このステートメントは、CTRL + C キーを押してコマンドを中断するまで、無限に繰り返されます。

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

次の例では、の値が10以下の $i 場合、ループが For 実行されます。

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

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

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

セミコロンではなく復帰を使用して、ステートメントの For InitCondition、および Repeat 部分を区切ることができます。 次の例は、この代替構文を使用するを For 示しています。

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

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

Forループは、 Foreach パターンを使用して配列またはコレクションの値をインクリメントできるため、ループよりも柔軟です。 次の例 $i では、ステートメントの 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 }

関連項目