次の方法で共有


about_For

簡単な説明

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

長い説明

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

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

構文

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

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

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

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

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

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

Statement リスト プレースホルダーは、ループが入力または繰り返されるたびに実行される 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"
}

注意

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

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

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

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

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

今後の例では、 ステートメントの外側に意図的にコードが示されていることに 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 を使用して配置できます。 条件が に$false評価されると、ループはFor終了します。

次の例では、 の値$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}

ステートメントの InitConditionRepeat の各部分を区切るには、セミコロンの代わりにキャリッジ リターンを For 使用できます。 次の例は、この代替構文を使用する を示しています For

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

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

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

こちらもご覧ください