Categories: PowerShell

PowerShell 的 For 迴圈用法教學與範例

介紹如何在 PowerShell 中使用 For 迴圈處理重複性的工作。

For 迴圈

For 迴圈主要用於處理重複次數是固定的問題,也就是在執行迴圈之前,就已經事先知道要迭代幾次的情況,其語法如下。

For (<計數器啟始>; <條件式>; <計數器增量>) {
  <程式碼區塊>
}

迴圈在執行值時會先執行一次計數器啟始後,判斷條件式是否成立,若成立則執行程式碼區塊,接著執行計數器增量後再次判斷條件式是否成立,若成立則繼續重複執行程式碼區塊,如此反覆執行直到條件式不成立時才跳出迴圈。

例如若要利用 For 迴圈列印從 15 的數值,就可以這樣寫:

# $i 從 1 跑到 5
For ($i = 1; $i -le 5; $i++) {
  # 列出 $i 的數值
  $i
}
1
2
3
4
5

這裡的 For 迴圈一開始設定 $i1 開始執行,條件設定為 $i 小於或等於 5$i -le 5),每執行完一次程式碼區塊就讓 $i 遞增 1$i++),整個迴圈的效果就是列印從 15 的數值。

跳過當次疊代

在迴圈執行到一半時,如果想要跳過當次的迭代,可以使用 Continue,例如若想要讓迴圈在執行時,跳過偶數的的 $i,就可以這樣寫:

For ($i = 1; $i -le 5; $i++) {
  # 跳過偶數的 $i
  If ($i % 2 -eq 0) {
    Continue
  }

  $i
}
1
3
5

這裡我們在迴圈的程式碼區塊插入一條判斷式,檢查 $i 是否為偶數,若 $i 為偶數則執行 Continue 跳過當次的迭代(不執行下方輸出 $i 的部分)。

離開迴圈

如果想要讓迴圈執行到一半時直接中斷、跳出迴圈,可以使用 Break,例如若想要讓迴圈在 $i 在大於 3 的時候就直接跳出,可以這樣寫:

For ($i = 1; $i -le 5; $i++) {
  # 若 $i 大於 3 則跳出迴圈
  If ($i -gt 3) {
    Break
  }

  $i
}
1
2
3

這裡我們在迴圈的程式碼區塊插入一條判斷式,檢查 $i 是否大於 3,若條件成立則執行 Break 跳出 For 迴圈。

無窮迴圈

For 迴圈不設置任何條件時,就是一種無窮迴圈,這種情況通常會搭配 Break 使用。列印出 15 也可以這樣寫:

$i = 1
For (;;) {
  If ($i -gt 5) {
    Break
  }
  $i    # 輸出 $i
  $i++  # 遞增 $i
}
1
2
3
4
5

迴圈標籤

在巢狀結構的多層迴圈,ContinueBreak 可以搭配標籤的方式來指定要作用的迴圈是哪一個,迴圈的標籤要放在迴圈之前,以冒號開頭,並加上標籤名稱,例如 :MyLoopName,而在呼叫 ContinueBreak 的時候就可以用標籤名稱指定要作用的迴圈是哪一個,以下是一個簡單的範例:

# 設定迴圈標籤
:MyLoopName For ($i = 1; $i -le 5; $i++) {
  For ($j = 1; $j -le 5; $j++) {
    if ($i + $j -gt 3) {
      # 跳出指定標籤的迴圈
      Break MyLoopName
    }
    echo "i = $i, j = $j"
  }
}
i = 1, j = 1
i = 1, j = 2

參考資料:Adam the Automator微軟官方文件

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

11 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago