Mirando la documentación para for(ejecutar for /?para verla), no creo for /fque lea de una tubería. Las únicas fuentes válidas son el conjunto de archivos, "cadena" y 'comando'.
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
Podría poner el comando dentro de la forsiguiente manera:
for /f "tokens=15" %f in ('ipconfig ^| findstr "Address"') do @echo %f
192.168.x.x
192.168.y.y
(gracias a la neurólisis por señalar que tiene que ser ^|y no solo |)
O puede intentar poner ipconfig | findstr "Address"un script por lotes separado y llamar:
for /f "tokens=14" %f in ('ipaddresses') do @echo %f
(suponiendo que llamó al guión ipaddresses).
O también podría forhacer el trabajo de findstresta manera:
for /f "tokens=2,14" %i in ('ipconfig') do @if %i==Address. @echo %j
192.168.x.x
192.168.y.y
no es lo mismo porque no coincidirá con las direcciones IPv6, pero algo en ese sentido podría funcionar.
También tenga en cuenta que me cambié tokens=15a tokens=14. Creo que el último campo en la línea es el token 14. De todos modos, me funciona.
foren lugar deipconfig. Solo hazlofor /f "tokens=15" %f in ('ipconfig ^| findstr "Address"') do @echo %f, cuando^es el personaje de escape.