Olhando para a documentação for(corra for /?para vê-la), acho que não for /fserá lido em um pipe. As únicas fontes válidas são o conjunto de arquivos, "string" e 'command'.
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]
Você pode colocar o comando dentro fordesta maneira:
for /f "tokens=15" %f in ('ipconfig ^| findstr "Address"') do @echo %f
192.168.x.x
192.168.y.y
(graças à neurólise por apontar que tem que ser ^|e não apenas |)
Ou você pode tentar inserir ipconfig | findstr "Address"um script em lote separado e chamar:
for /f "tokens=14" %f in ('ipaddresses') do @echo %f
(supondo que você tenha chamado o script ipaddresses).
Ou você pode usar foro trabalho findstrtambém, assim:
for /f "tokens=2,14" %i in ('ipconfig') do @if %i==Address. @echo %j
192.168.x.x
192.168.y.y
não é exatamente o mesmo porque não corresponde aos endereços IPv6, mas algo nesse sentido pode funcionar.
Observe também que mudei tokens=15para tokens=14. Acho que o último campo da linha é o token 14. Funciona para mim de qualquer maneira.