about_For

適用対象: Windows PowerShell 2.0, Windows PowerShell 3.0

トピック

about_For

簡単な説明

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

詳細な説明

For ステートメント (For ループとも呼ばれます) は、指定した条件が True と評価されている間、コマンド ブロック内のコマンドを実行するループを作成するために使用可能な言語構造です。

For ループは、一般に、値の配列を繰り返し処理したり、それらの値のサブセットに対して操作をするために使用します。配列内のすべての値を繰り返し処理するためには、多くの場合、Foreach ステートメントの使用を検討するとよいでしょう。

構文

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

          for (<init>; <condition>; <repeat>) 
          {<statement list>}

<init> プレースホルダーは、コンマで区切られた 1 つ以上のコマンドを表します。これらのコマンドはループが始まる前に実行されます。ステートメントの <init> の部分は一般に、変数を作成したり、開始値で初期化するために使用されます。次の例のような代入ステートメントでは、コンマ構文が使えないことに注意してください。

          $ofs=",";$rs = "rs"; $cs = "cs"; for ($r = $rs, $c = $cs; $true;) 
          { "r is '$r' and c is '$c'"; break }

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

<condition> プレースホルダーは、For ステートメントでブール値 True または False に解決される部分を表しています。Windows PowerShell® では、For ループが実行されるたびに条件が評価されます。ステートメントが True の場合は、コマンド ブロックのコマンドが実行され、ステートメントが再び評価されます。条件が引き続き True の場合は、ステートメント リストのコマンドが再び実行されます。ループは、条件が False になるまで繰り返されます。

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

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

For ステートメントには少なくとも、ステートメントの <init>、<condition>、および <repeat> の部分を囲む丸かっこ、およびステートメントの <statement list> の部分に中かっこで囲んだコマンド 1 つを指定する必要があります。

次の例では、コードを意図的に 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 ステートメントの <repeat> の部分を使用できます。

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

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

(ステートメントの <condition> の部分を使用して) 条件を設定すると、条件が False と評価されたときに For ループを終了させることができます。次の例では、$i の値が 10 以下の間、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 ステートメントの <init>、<condition>、および <repeat> の部分は、セミコロンの代わりにキャリッジ リターンを使用して区切ることができます。次の例は、この代替形式の For ステートメントの構文を示しています。

        
            for (<init>
          <condition>
          <repeat>){
          <statement list>
          }

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

For ループでは、パターンを使用して配列またはコレクションの値を増分できるので、Foreach ループよりも柔軟性があります。次の例では、For ステートメントの <repeat> の部分で変数 $i が 2 ずつ増分されています。

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

関連項目

about_Comparison_Operators

about_Foreach