Дивлячись на документацію 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. Діє для мене все одно.