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
ステートメントの Init、 Condition、 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
の変数の値を変更するのではなく、次のようにステートメントの Repeat 部分を For
使用できます。
$i=1
for (;;$i++)
{
Write-Host $i
}
このステートメントは、Ctrl キーを押しながら C キーを押してコマンドから抜け出すまで、無期限に繰り返されます。
条件をFor
使用してループを終了できます。 条件は、ステートメントの Condition 部分 For
を使用して配置できます。 条件が に$false
評価されると、ループはFor
終了します。
次の例では、 の値$i
が For
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、 Condition、 Repeat の各部分を区切るには、セミコロンの代わりにキャリッジ リターンを 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 }