Глядя на документацию for(беги, for /?чтобы увидеть ее), я не думаю, что for /fбудет читать из трубы. Единственными допустимыми источниками являются набор файлов, «строка» и «команда».
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]
Вы можете поместить команду внутри forтак:
for /f "tokens=15" %f in ('ipconfig ^| findstr "Address"') do @echo %f
192.168.x.x
192.168.y.y
(спасибо невролизу за то, что указал на это должно быть, ^|а не только |)
Или вы можете попробовать вставить ipconfig | findstr "Address"отдельный пакетный скрипт и вызвать:
for /f "tokens=14" %f in ('ipaddresses') do @echo %f
(при условии, что вы назвали сценарий ipaddresses).
Или вы можете использовать, forчтобы сделать работу findstrтоже, как это:
for /f "tokens=2,14" %i in ('ipconfig') do @if %i==Address. @echo %j
192.168.x.x
192.168.y.y
это не совсем то же самое, потому что он не будет соответствовать адресам IPv6, но что-то в этом роде может работать.
Также обратите внимание, что я изменился tokens=15на tokens=14. Я думаю, что последнее поле в строке - это токен 14. У меня все равно работает.