Saltar al contenido

Contar en un bucle FOR usando el script de Windows Batch

Basta ya de buscar por otros sitios porque llegaste al sitio indicado, contamos con la solución que buscas pero sin problemas.

Solución:

No funciona porque el completofor bucle (del for al último paréntesis de cierre, incluso los comandos entre esos) se evalúa cuando se encuentra, antes de comienza a ejecutarse.

En otras palabras, %count% se reemplaza con su valor 1 antes de ejecutar el bucle.

Lo que necesitas es algo como:

setlocal enableextensions enabledelayedexpansion
set /a count = 1
for /f "tokens=*" %%a in (config.properties) do (
  set /a count += 1
  echo !count!
)
endlocal

Expansión retardada usando ! en vez de % le dará el comportamiento esperado. Consulte también aquí.


También tenga en cuenta que setlocal/endlocal en realidad, limite el alcance de las cosas cambiadas en el interior para que no se filtren. Si quieres usar countdespués el endlocal, tienes que usar un “truco” que es posible gracias al mismo problema que estás teniendo:

endlocal && set count=%count%

Digamos count se ha convertido en 7 dentro del ámbito interno. Debido a que todo el comando se interpreta antes de la ejecución, efectivamente se convierte en:

endlocal && set count=7

Entonces, cuando sea ejecutado, el visor interior se cierra, volviendo count a su valor original. Pero, desde el establecimiento de count a siete ocurre en el alcance externo, efectivamente está filtrando la información que necesita.

Usted puede string juntos varios subcomandos para filtrar toda la información que necesite:

endlocal && set count=%count% && set something_else=%something_else%

para a = 1 a 100 paso 1

Línea de comando en Windows. Utilice %% a si se ejecuta en un archivo por lotes.

    for /L %a in (1,1,100) Do echo %a 

valoraciones y comentarios

Ten en cuenta comunicar esta división si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *