En regardant la documentation de for
(courez for /?
pour le voir), je ne pense pas que for /f
lira à partir d'un tuyau. Les seules sources valides sont l'ensemble de fichiers, la "chaîne" et la "commande".
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]
Vous pouvez mettre la commande à l'intérieur for
comme ceci:
for /f "tokens=15" %f in ('ipconfig ^| findstr "Address"') do @echo %f
192.168.x.x
192.168.y.y
(merci à la neurolyse de l'avoir souligné ^|
et pas seulement |
)
Ou vous pouvez essayer de mettre ipconfig | findstr "Address"
un script batch séparé et d'appeler:
for /f "tokens=14" %f in ('ipaddresses') do @echo %f
(en supposant que vous avez appelé le script ipaddresses
).
Ou vous pouvez aussi utiliser for
pour faire le travail findstr
, comme ceci:
for /f "tokens=2,14" %i in ('ipconfig') do @if %i==Address. @echo %j
192.168.x.x
192.168.y.y
ce n'est pas tout à fait la même chose car il ne correspondra pas aux adresses IPv6, mais quelque chose dans ce sens pourrait fonctionner.
Notez également que j'ai changé tokens=15
pour tokens=14
. Je pense que le dernier champ de la ligne est le jeton 14. Ça marche pour moi quand même.
for
plutôt de la canalisationipconfig
. Faites justefor /f "tokens=15" %f in ('ipconfig ^| findstr "Address"') do @echo %f
, quand^
est le personnage d'échappement.