Mi actual línea de código del lote es:Salir de DE en el lote
for /L %%a in (8000,1,8100) do netstat /a /n | find "%%a" | find "LISTENING" || set tmp_freeport=%%a && goto found
La idea es encontrar un puerto libre que será utilizado para la escucha, dentro de la gama de 8000-8100.
Actualmente, tengo el puerto 8000 en uso, por lo que la secuencia de comandos debería ir a 8001.
después del bucle, %tmp_freeport%
es igual a 8001, como debe ser, y su valor se utiliza posteriormente correctamente.
El problema es que el ciclo sigue funcionando independientemente. Se llama a netstat
para buscar los 101 puertos del rango, lo que obviamente es ineficiente y no deseado, porque la búsqueda debe completarse antes de que el script pueda continuar.
¿Alguien me puede decir cómo salir de un bucle FOR batch?
(Alternativamente, si hay una mejor manera de encontrar un puerto libre, por favor ver mi somewhat-related question)
¿Ha probado mi respuesta? ¿funcionó? –