Tengo una lista delimitada de IP que me gustaría procesar individualmente. La longitud de la lista es desconocida por adelantado. ¿Cómo puedo dividir y procesar cada elemento en la lista?dos lotes iterar a través de una cadena delimitada
@echo off
set servers=127.0.0.1,192.168.0.1,10.100.0.1
FOR /f "tokens=* delims=," %%a IN ("%servers%") DO call :sub %%a
:sub
echo In subroutine
echo %1
exit /b
Salidas:
In subroutine
127.0.0.1
In subroutine
ECHO is off.
Actualización: Usando la respuesta de Franci como referencia, aquí está la solución:
@echo off
set servers=127.0.0.1,192.168.0.1,10.100.0.1
call :parse "%servers%"
goto :end
:parse
setlocal
set list=%1
set list=%list:"=%
FOR /f "tokens=1* delims=," %%a IN ("%list%") DO (
if not "%%a" == "" call :sub %%a
if not "%%b" == "" call :parse "%%b"
)
endlocal
exit /b
:sub
setlocal
echo In subroutine
echo %1
endlocal
exit /b
:end
Salidas:
In subroutine
127.0.0.1
In subroutine
192.168.0.1
In subroutine
10.100.0.1
Mientras que la solución recursiva es bueno, creo que la sustitución de nueva línea de abajo es más simple. – kybernetikos