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 for
nastę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ć for
do 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=15
na tokens=14
. Myślę, że ostatnim polem na linii jest token 14. W każdym razie działa dla mnie.
for
zamiast tego działa on w trybie potokowymipconfig
. Po prostu zróbfor /f "tokens=15" %f in ('ipconfig ^| findstr "Address"') do @echo %f
, kiedy^
jest ucieczka.