У меня есть разделенный список IP-адресов, которые я хотел бы обрабатывать отдельно. Длина списка неизвестна заранее. Как разделить и обработать каждый элемент в списке?
@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
Выходы:
In subroutine
127.0.0.1
In subroutine
ECHO is off.
Update: Используя Францию в качестве ссылки, здесь решение:
@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
Выходы:
In subroutine
127.0.0.1
In subroutine
192.168.0.1
In subroutine
10.100.0.1