Patrząc na dokumentację for(biegnij, for /?aby ją zobaczyć), nie sądzę, for /fże przeczytam z potoku. Jedynymi prawidłowymi źródłami są zestaw plików, „ciąg” i „polecenie”.
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]
Możesz umieścić polecenie w fornastępujący sposób:
for /f "tokens=15" %f in ('ipconfig ^| findstr "Address"') do @echo %f
192.168.x.x
192.168.y.y
(dzięki neurolizie za wskazanie, że musi być, ^|a nie tylko |)
Lub możesz spróbować wprowadzić ipconfig | findstr "Address"osobny skrypt wsadowy i wywołać:
for /f "tokens=14" %f in ('ipaddresses') do @echo %f
(zakładając, że wywołałeś skrypt ipaddresses).
Możesz też użyć fordo wykonania tej pracy findstr:
for /f "tokens=2,14" %i in ('ipconfig') do @if %i==Address. @echo %j
192.168.x.x
192.168.y.y
nie jest dokładnie taki sam, ponieważ nie będzie pasował do adresów IPv6, ale coś w tym stylu mogłoby działać.
Zauważ też, że zmieniłem tokens=15na tokens=14. Myślę, że ostatnim polem na linii jest token 14. W każdym razie działa dla mnie.