Wenn ich mir die Dokumentation für for(Ausführen for /?, um sie zu sehen) ansehe, denke ich nicht, dass for /fsie aus einer Pipe gelesen wird. Die einzigen gültigen Quellen sind Dateisatz, "Zeichenfolge" und "Befehl".
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]
Sie können den Befehl forwie folgt eingeben :
for /f "tokens=15" %f in ('ipconfig ^| findstr "Address"') do @echo %f
192.168.x.x
192.168.y.y
(Dank der Neurolyse für den Hinweis, dass es sein muss ^|und nicht nur |)
Oder Sie können versuchen, ipconfig | findstr "Address"ein separates Batch-Skript einzufügen und Folgendes aufzurufen:
for /f "tokens=14" %f in ('ipaddresses') do @echo %f
(vorausgesetzt, Sie haben das Skript aufgerufen ipaddresses).
Oder Sie könnten forauch die Arbeit von findstrso machen:
for /f "tokens=2,14" %i in ('ipconfig') do @if %i==Address. @echo %j
192.168.x.x
192.168.y.y
Es ist nicht ganz dasselbe, da es nicht mit IPv6-Adressen übereinstimmt, aber etwas in dieser Richtung könnte funktionieren.
Beachten Sie auch, dass ich zu geändert tokens=15habe tokens=14. Ich denke, das letzte Feld in der Zeile ist Token 14. Funktioniert sowieso für mich.