continue用于跳过当前迭代剩余代码并进入下一次判断:单层循环中直接终止本次执行;嵌套循环可用标签(:label)配合continue label精准跳转外层;switch处理集合时跳过当前匹配项继续下一元素。
continue 在 powershell 循环中用于跳过当前迭代的剩余代码,直接进入下一次迭代判断。
单层循环中用法最直接
在 for、foreach、while 或 do 循环里,遇到 continue 就立刻终止本次循环体执行,回到条件检查或迭代变量更新步骤:
- 对
foreach:跳过当前项后续所有语句,取下一个元素继续 - 对
for:先执行<repeat></repeat>(如$i++),再判断<condition></condition> - 对
while:跳回循环开头,重新评估条件表达式
示例:跳过管理员用户
foreach ($user in $users) {
if ($user.Name -eq "Administrator") {
continue
}
Set-UserProperty -User $user -Active $true
}
带标签的 continue 精准控制嵌套循环
多层循环时,不加标签的 continue 只影响最内层。要跳出外层某一层,需配合标签使用:
- 标签写在循环语句前,格式为
:labelName,冒号紧贴标签名,中间不能有空格 -
continue labelName会终止当前所在循环,并将控制权交还给对应标签标记的那层循环顶部 - 常用于三层及以上嵌套,避免深层
if嵌套或重复逻辑
示例:在三层 for 中,满足条件时跳回第二层循环开头
:outer for ($i = 1; $i -le 3; $i++) {
:middle for ($j = 1; $j -le 3; $j++) {
:inner for ($k = 1; $k -le 3; $k++) {
if ($i -eq 2 -and $j -eq 2) {
continue middle
}
Write-Host "$i,$j,$k"
}
}
}
在 switch 语句中也能用 continue
当 switch 输入是多个值(如数组)时,continue 表示跳过当前匹配项,继续处理下一个输入元素:
- 输入是单个值时,
continue相当于退出整个switch - 输入是集合(如
1,2,3),continue会跳到下一个元素,不会中断整个结构
示例:过滤掉数字 2
switch (1, 2, 3) {
2 { continue }
default { "Got $_" }
}
# 输出:Got 1、Got 3
注意事项和常见陷阱
用错位置或逻辑疏忽容易引发意外行为:
- 在
for循环中,continue后的变量更新仍会执行(如$i++),但写在continue后面的语句不会运行 - 在
while中若忘记更新循环变量,又在条件不满足前用了continue,可能造成死循环 -
continue不适用于if或普通语句块,只对循环和switch有效 - 标签名区分大小写,且必须在
continue作用域内可见











