介紹如何在 PowerShell 中使用 For 迴圈處理重複性的工作。
For 迴圈
For 迴圈主要用於處理重複次數是固定的問題,也就是在執行迴圈之前,就已經事先知道要迭代幾次的情況,其語法如下。
For (<計數器啟始>; <條件式>; <計數器增量>) {
<程式碼區塊>
}
迴圈在執行值時會先執行一次計數器啟始後,判斷條件式是否成立,若成立則執行程式碼區塊,接著執行計數器增量後再次判斷條件式是否成立,若成立則繼續重複執行程式碼區塊,如此反覆執行直到條件式不成立時才跳出迴圈。
例如若要利用 For 迴圈列印從 1 到 5 的數值,就可以這樣寫:
# $i 從 1 跑到 5 For ($i = 1; $i -le 5; $i++) { # 列出 $i 的數值 $i }
1 2 3 4 5
這裡的 For 迴圈一開始設定 $i 從 1 開始執行,條件設定為 $i 小於或等於 5($i -le 5),每執行完一次程式碼區塊就讓 $i 遞增 1($i++),整個迴圈的效果就是列印從 1 到 5 的數值。
跳過當次疊代
在迴圈執行到一半時,如果想要跳過當次的迭代,可以使用 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 使用。列印出 1 到 5 也可以這樣寫:
$i = 1 For (;;) { If ($i -gt 5) { Break } $i # 輸出 $i $i++ # 遞增 $i }
1 2 3 4 5
迴圈標籤
在巢狀結構的多層迴圈,Continue 與 Break 可以搭配標籤的方式來指定要作用的迴圈是哪一個,迴圈的標籤要放在迴圈之前,以冒號開頭,並加上標籤名稱,例如 :MyLoopName,而在呼叫 Continue 與 Break 的時候就可以用標籤名稱指定要作用的迴圈是哪一個,以下是一個簡單的範例:
# 設定迴圈標籤 :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、微軟官方文件

