Выход из FOR в пакетном режиме

Моя текущая строка батч-кода:

for /L %%a in (8000,1,8100) do netstat /a /n | find "%%a" | find "LISTENING" || set tmp_freeport=%%a && goto found

Идея состоит в том, чтобы найти свободный порт, который будет использоваться для прослушивания , в пределах 8000-8100.

В настоящее время у меня используется порт 8000, поэтому сценарий должен перейти на 8001.

После цикла %tmp_freeport%равен 8001, как и должно быть, и его значение использоваться позже правильно.

Проблема в том, что цикл все равно продолжает работать. netstatвызывается для поиска всех 101 порта в диапазоне, что явно неэффективно и нежелательно, поскольку поиск должен завершиться, прежде чем сценарий сможет продолжить работу.

Кто-нибудь может сказать мне, как выйти из цикла FOR?

(В качестве альтернативы, если есть лучший способ найти свободный порт, см. мой несколько связанный вопрос)

6
задан Community 23 May 2017 в 12:25
поделиться