about_For

简短说明

介绍可用于基于条件测试运行语句的语言命令。

长说明

语句 For (也称为 For 循环) 是一种语言构造,可用于在指定条件的计算结果为 $true时创建在命令块中运行命令的循环。

循环的典型 For 用途是循环访问值的数组并对这些值的子集进行操作。 在大多数情况下,如果要循环访问数组中的所有值,请考虑使用 Foreach 语句。

语法

下面显示了 For 语句语法。

for (<Init>; <Condition>; <Repeat>)
{
    <Statement list>
}

Init 占位符表示在循环开始前运行的一个或多个命令。 通常使用 语句的 Init 部分来创建和初始化具有起始值的变量。

然后,此变量将成为在语句的下一部分中 For 测试条件的基础。

Condition 占位符表示解析为 $true$false布尔值的语句部分For。 每次运行循环时,PowerShell 都会 For 评估条件。 如果 语句为 $true,则运行命令块中的命令,并再次计算 语句。 如果条件仍 $true为 ,则 “语句”列表中的 命令将再次运行。 循环重复,直到条件变为 $false

Repeat 占位符表示每次循环重复时执行的一个或多个命令,用逗号分隔。 通常,这用于修改在 语句的 Condition 部分内测试的变量。

语句列表占位符表示每次进入或重复循环时都会运行的一个或多个命令集。 语句列表的内容用大括号括起来。

支持多个操作

Init 语句中的多个赋值操作支持以下语法:

# Comma separated assignment expressions enclosed in parenthesis.
for (($i = 0), ($j = 0); $i -lt 10; $i++)
{
    "`$i:$i"
    "`$j:$j"
}

# Sub-expression using the semicolon to separate statements.
for ($($i = 0;$j = 0); $i -lt 10; $i++)
{
    "`$i:$i"
    "`$j:$j"
}

Repeat 语句中的多个赋值操作支持以下语法:

# Comma separated assignment expressions.
for (($i = 0), ($j = 0); $i -lt 10; $i++, $j++)
{
    "`$i:$i"
    "`$j:$j"
}

# Comma separated assignment expressions enclosed in parenthesis.
for (($i = 0), ($j = 0); $i -lt 10; ($i++), ($j++))
{
    "`$i:$i"
    "`$j:$j"
}

# Sub-expression using the semicolon to separate statements.
for ($($i = 0;$j = 0); $i -lt 10; $($i++;$j++))
{
    "`$i:$i"
    "`$j:$j"
}

注意

前增量或后增量以外的操作可能不适用于所有语法。

对于多个 条件 ,请使用逻辑运算符,如以下示例所示。

for (($i = 0), ($j = 0); $i -lt 10 -and $j -lt 10; $i++,$j++)
{
    "`$i:$i"
    "`$j:$j"
}

有关详细信息,请参阅 about_Logical_Operators

示例

语句至少 For 需要语句的 InitConditionRepeat 部分的括号,以及语句 的语句列表 部分中用大括号括起来的命令。

请注意,即将发布的示例有意在 语句外部 For 显示代码。 在后面的示例中,代码已集成到 语句中 For

例如,以下 For 语句持续显示 变量的值, $i 直到按 Ctrl+C 手动中断命令。

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

可以将其他命令添加到语句列表,以便 每次运行循环时, $i 的值都会递增 1,如以下示例所示。

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

在通过按 Ctrl+C 中断命令之前,此语句将持续显示变量的值 $i ,因为每次运行循环时变量的值都会递增 1。

可以改用语句的 Repeat 部分For,而不是更改语句的 语句列表部分中For变量的值,如下所示。

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

此语句仍将无限期重复,直到按 Ctrl+C 中断命令。

可以使用条件终止For循环。 可以使用 语句的 For Condition 部分放置条件。 当 For 条件的计算结果为 $false时,循环终止。

在以下示例中 For , 循环在 的值 $i 小于或等于 10 时运行。

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

可以使用 语句的 ForInit 部分For在循环中For执行此任务,而不是在 语句外部创建和初始化变量。

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

可以使用回车符而不是分号来分隔语句的 InitConditionRepeat 部分 For 。 以下示例演示 For 使用此替代语法的 。

for ($i = 0
  $i -lt 10
  $i++){
  $i
}

语句的 For 这种替代形式适用于 PowerShell 脚本文件和 PowerShell 命令提示符处。 但是,在命令提示符下输入交互式命令时,将语句语法与分号一 For 起使用会更容易。

循环 For 比 循环更灵活, Foreach 因为它允许使用模式递增数组或集合中的值。 在下面的示例中$i, 变量在 语句的 ForRepeat 部分中递增 2。

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

For循环也可以写入一行,如以下示例所示。

for ($i = 0; $i -lt 10; $i++) { Write-Host $i }

另请参阅

about_Comparison_Operators

about_Foreach