about_For

Descripción breve

Describe un comando de lenguaje que puede usar para ejecutar instrucciones basadas en una prueba condicional.

Descripción larga

La For instrucción (también conocida como For bucle) es una construcción de lenguaje que puede usar para crear un bucle que ejecute comandos en un bloque de comandos mientras una condición especificada se evalúa como $true.

Un uso típico del For bucle es iterar una matriz de valores y operar en un subconjunto de estos valores. En la mayoría de los casos, si desea iterar todos los valores de una matriz, considere la posibilidad de usar una Foreach instrucción .

Sintaxis

A continuación se muestra la sintaxis de la For instrucción .

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

El marcador de posición Init representa uno o varios comandos que se ejecutan antes de que comience el bucle. Normalmente, se usa la parte Init de la instrucción para crear e inicializar una variable con un valor inicial.

Esta variable será la base de la condición que se va a probar en la siguiente parte de la For instrucción .

El marcador de posición Condición representa la parte de la For instrucción que se resuelve en un $true valor booleano o .$false PowerShell evalúa la condición cada vez que se ejecuta el For bucle. Si la instrucción es $true, los comandos del bloque de comandos se ejecutan y la instrucción se vuelve a evaluar. Si la condición sigue siendo $true, los comandos de la lista Instrucción se ejecutan de nuevo. El bucle se repite hasta que la condición se convierte en $false.

El marcador de posición Repeat representa uno o varios comandos, separados por comas, que se ejecutan cada vez que se repite el bucle. Normalmente, se usa para modificar una variable que se prueba dentro de la parte Condición de la instrucción .

El marcador de posición de lista Instrucción representa un conjunto de uno o varios comandos que se ejecutan cada vez que se escribe o repite el bucle. El contenido de la lista Instrucción está rodeado de llaves.

Compatibilidad con varias operaciones

Se admiten las siguientes sintaxis para varias operaciones de asignación en la instrucción Init :

# Comma separated assignment expressions enclosed in parentheses.
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"
}

Se admiten las siguientes sintaxis para varias operaciones de asignación en la instrucción 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 parentheses.
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"
}

Nota:

Es posible que las operaciones que no sean el incremento previo o posterior no funcionen con todas las sintaxis.

En el caso de varias condiciones , use operadores lógicos como se muestra en el ejemplo siguiente.

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

Para obtener más información, consulte about_Logical_Operators.

Ejemplos

Como mínimo, una For instrucción requiere el paréntesis que rodea a la parte Init, Condition y Repeat de la instrucción y un comando rodeado de llaves en la parte de lista Instrucción de la instrucción.

Tenga en cuenta que los próximos ejemplos muestran intencionadamente código fuera de la For instrucción . En ejemplos posteriores, el código se integra en la For instrucción .

Por ejemplo, la siguiente For instrucción muestra continuamente el valor de la $i variable hasta que se interrumpe manualmente el comando presionando CTRL+C.

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

Puede agregar comandos adicionales a la lista de instrucciones para que el valor de $i se incremente en 1 cada vez que se ejecute el bucle, como se muestra en el ejemplo siguiente.

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

Hasta que salga del comando presionando CTRL+C, esta instrucción mostrará continuamente el valor de la $i variable, ya que se incrementa en 1 cada vez que se ejecuta el bucle.

En lugar de cambiar el valor de la variable en la parte de lista de instrucciones de la For instrucción, puede usar la parte Repeat de la For instrucción en su lugar, como se indica a continuación.

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

Esta instrucción se repetirá indefinidamente hasta que salga del comando presionando CTRL+C.

Puede finalizar el For bucle mediante una condición. Puede colocar una condición mediante la parte Condición de la For instrucción . El For bucle finaliza cuando la condición se evalúa como $false.

En el ejemplo siguiente, el For bucle se ejecuta mientras el valor de $i es menor o igual que 10.

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

En lugar de crear e inicializar la variable fuera de la For instrucción , puede realizar esta tarea dentro del For bucle mediante la parte Init de la For instrucción .

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

Puede usar retornos de carro en lugar de punto y coma para delimitar las partes Init, Condition y Repeat de la For instrucción. En el ejemplo siguiente se muestra un For que usa esta sintaxis alternativa.

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

Esta forma alternativa de la For instrucción funciona en archivos de script de PowerShell y en el símbolo del sistema de PowerShell. Sin embargo, es más fácil usar la sintaxis de instrucción For con punto y coma al escribir comandos interactivos en el símbolo del sistema.

El For bucle es más flexible que el Foreach bucle porque permite incrementar los valores de una matriz o colección mediante patrones. En el ejemplo siguiente, la $i variable se incrementa en 2 en la parte Repeat de la For instrucción .

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

El For bucle también se puede escribir en una línea como en el ejemplo siguiente.

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

Consulte también