Mirando la documentación para for
(ejecutar for /?
para verla), no creo for /f
que 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 for
siguiente 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 for
hacer el trabajo de findstr
esta 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=15
a tokens=14
. Creo que el último campo en la línea es el token 14. De todos modos, me funciona.
for
en lugar deipconfig
. Solo hazlofor /f "tokens=15" %f in ('ipconfig ^| findstr "Address"') do @echo %f
, cuando^
es el personaje de escape.