PowerShellのループ・繰り返し処理|for・foreach・whileの使い方を初心者向けに解説

PowerShell

PowerShellでは、同じ処理を何度も繰り返したいときに「ループ処理」を使用します。
例えば、

  • 複数のファイルを1つずつ処理する
  • 配列のデータを順番に処理する
  • 同じ処理を10回繰り返す
  • 条件を満たすまで処理を続ける

といった処理を自動化できます。
PowerShellの代表的なループ処理には、foreach、for、while、do while、do untilがあります。それぞれ使い方が異なるため、「どれを使えばいいの?」と迷う方も多いでしょう。

この記事では、PowerShellのループ・繰り返し処理の使い方を、初心者向けにサンプルコード付きでわかりやすく解説します。

PowerShellのループ処理はどれを使えばいい?

PowerShellには複数のループ処理があります。
最初に、それぞれの違いを簡単に確認しておきましょう。

やりたいこと 使うループ
配列を順番に処理したい foreach
指定した回数だけ繰り返したい for
条件を満たしている間繰り返したい while
最低1回実行してから条件判定したい do while
条件を満たすまで繰り返したい do until

例えば、ファイル一覧を1件ずつ処理する場合はforeach、同じ処理を10回繰り返す場合はforが分かりやすいでしょう。

初心者の方は、まずforeach・for・whileの3つを覚えておけば、多くの繰り返し処理に対応できます。

foreachで配列を繰り返し処理する

foreachは、配列などに格納されている複数のデータを1つずつ順番に処理するときに使用します。
基本構文です。

foreach ($変数 in $配列) {
    実行する処理
}
例えば、3つの名前を順番に表示してみます。
$names = "田中", "鈴木", "佐藤"

foreach ($name in $names) {
    Write-Output $name
}
実行結果は次のようになります。
田中
鈴木
佐藤
配列の内容が順番に$nameへ入り、Write-Outputが実行されます。

foreachでファイルを1件ずつ処理する

PowerShellではファイル操作を自動化することが多いため、foreachは特によく使用します。
例えば、フォルダ内のファイル名を順番に表示する場合は次のように記述します。

$files = Get-ChildItem "C:\work"

foreach ($file in $files) {
    Write-Output $file.Name
}
この方法を応用すると、複数ファイルのコピー、移動、名前変更なども自動化できます。

forで指定回数だけ繰り返す

「同じ処理を10回実行したい」など、繰り返す回数が決まっている場合forが便利です。
forの基本構文です。

for (初期値; 条件; 増減処理) {
    実行する処理
}
例えば、1から5まで表示します。
for ($i = 1; $i -le 5; $i++) {
    Write-Output $i
}
実行結果:
1
2
3
4
5
このコードでは、

$i = 1
→ 1から開始

$i -le 5
→ 5以下の間繰り返す

$i++
→ 1ずつ増やす

という意味になります。
特にPowerShell初心者の場合、-leが分かりにくいかもしれません。
-leは「以下」という意味です。
したがって、

$i -le 5
は「$iが5以下の間」という条件になります。

whileで条件を満たしている間繰り返す

whileは、指定した条件がTrueの間、処理を繰り返します。
基本構文です。

while (条件) {
    実行する処理
}
例えば、1から5まで表示します。
$i = 1

while ($i -le 5) {
    Write-Output $i
    $i++
}
実行結果:
1
2
3
4
5
forとの大きな違いは、回数ではなく条件を基準に繰り返せることです。
例えば「ファイルが作成されるまで待つ」「特定の状態になるまで処理する」といった用途ではwhileが向いています。

do whileで最低1回は処理を実行する

do whileはwhileと似ていますが、条件を確認するタイミングが異なります。
基本構文です。

do {
    実行する処理
} while (条件)
例えば、
$i = 1

do {
    Write-Output $i
    $i++
} while ($i -le 5)
とすると、1~5が表示されます。
do whileでは、先に処理を実行してから条件を判定します。
そのため、最初から条件を満たしていなくても処理が最低1回実行されるのが特徴です。

do untilで条件を満たすまで繰り返す

do untilは、指定した条件がTrueになるまで処理を繰り返します。

do {
    実行する処理
} until (条件)
例えば、
$i = 1

do {
    Write-Output $i
    $i++
} until ($i -gt 5)
実行結果:
1
2
3
4
5

whileは「条件を満たしている間」、untilは「条件を満たすまで」という違いがあります。

breakでループ処理を途中終了する

ループの途中で処理を終了したい場合はbreakを使用します。
例えば1~10まで繰り返し、5になったら終了します。

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

    if ($i -eq 5) {
        break
    }

    Write-Output $i
}
実行結果:
1
2
3
4

$iが5になるとbreakが実行され、forループ自体が終了します。
エラーが発生した場合や、目的のデータが見つかった場合などに便利です。

continueで特定の処理だけスキップする

continueはループそのものを終了するのではなく、現在の回だけ処理をスキップして次へ進むときに使用します。
例えば3だけ表示しない場合です。

for ($i = 1; $i -le 5; $i++) {

    if ($i -eq 3) {
        continue
    }

    Write-Output $i
}
実行結果:
1
2
4
5

breakcontinueは混同しやすいので、

コマンド 動作
break ループ自体を終了
continue 今回だけ飛ばして次のループへ

と覚えておくと分かりやすいでしょう。

実務例:複数のファイルをループでコピーする

例えば、C:\workフォルダにある.txtファイルを、C:\backupへコピーしてみます。

$files = Get-ChildItem "C:\work" -Filter "*.txt"

foreach ($file in $files) {

    Copy-Item $file.FullName "C:\backup"

    Write-Output "$($file.Name) をコピーしました"
}
このようにforeachとファイル操作を組み合わせれば、複数ファイルをまとめて処理できます。

PowerShellでは、「ファイル一覧を取得 → foreachで1件ずつ処理」という書き方をよく使用します。
例えば、

  • 複数ファイルをコピーする
  • 古いファイルを削除する
  • ファイル名を変更する
  • CSVを1件ずつ処理する

といった作業にも応用できます。

foreach・for・whileの違い

どのループ処理を使えばよいか迷った場合は、次のように考えると分かりやすいです。

ループ 向いている処理
foreach データを1件ずつ処理 ファイル一覧、配列
for 回数が決まっている 10回実行
while 条件によって繰り返す 条件成立まで待機
do while 最低1回実行 実行後に継続判定
do until 条件成立まで実行 完了するまで繰り返す

通常のPowerShellスクリプトでは、まずforeachを使う場面が多いでしょう。
回数が決まっているならfor、条件によって繰り返すならwhileというように使い分けます。

まとめ

PowerShellでは、同じ処理を繰り返すために複数のループ構文が用意されています。
特によく使うのは、次の3つです。

  • foreach:配列やファイルを1件ずつ処理する
  • for:指定した回数だけ繰り返す
  • while:条件を満たしている間繰り返す

PowerShellでファイル操作やデータ処理を自動化する場合は、foreachを使う場面が多くあります。
まずはforeachの基本的な使い方を覚えてから、必要に応じてforやwhileを使うと分かりやすいでしょう。
また、ループを途中で終了する場合はbreak、現在の処理だけをスキップする場合はcontinueを使用します。
ループ処理を使えるようになると、PowerShellで複数のファイルやデータをまとめて処理できるようになり、日常業務の自動化にも活用できます。

タイトルとURLをコピーしました