Wie extrahiere ich die IPv4-IP-Adressen aus der Ausgabe von ipconfig und filtere sie dann so, dass meine Ausgabe nur eine Liste der IP-Adressen enthält?

1542
Hassan Daudzai

Wie extrahiere ich die IPv4-IP-Adresse aus der Ausgabe von ipconfig?

Ich habe diesen Beitrag gelesen und war sehr hilfreich. Ich habe mich nur gefragt, ob das eine Möglichkeit ist, nur die IP-Adressen (xxx.xxx.xxx.xxx) zu extrahieren. Am besten könnte ich mir vorstellen, Notepad zu verwenden, um alle zu finden bzw. alle zu ersetzen.

Gibt es eine Methode, die ich über die Befehlszeile verwenden kann?

1
Auf welche Weise liefert die Frage, die Sie verlinkt haben, nicht alle Informationen, die Sie benötigen? Bitte antworten Sie nicht in Kommentaren. [edit] deine Frage klarer und vollständiger. G-Man vor 6 Jahren 0
@ G-Man Klar, meine Antwort auf die andere Frage gibt Anhaltspunkte dafür, wie sie gelöst werden könnte, aber sie muss angepasst werden, um die Ausgabe bereitzustellen, die das OP wünscht. Die meisten Benutzer verfügen nicht über ausreichende Kenntnisse der Stapelprogrammierung, um diese Änderungen vorzunehmen. Ich habe eine Antwort auf das OP gegeben, von dem ich glaube, dass es seine Frage beantwortet. DavidPostill vor 6 Jahren 0
@ G-Man Ich bin mit Batch-Dateien einigermaßen gut vertraut, aber ich musste mir noch überlegen, wie ich einen regulären Ausdruck hinzufügen kann, um findstr zu finden, um gepunkteten Quad-IP-Adressen zu entsprechen. DavidPostill vor 6 Jahren 0
@ DavidPostill: Aber mein Punkt ist, dass Sie nicht brauchen. Der Ansatz "Suche nach IPv4" / "split" nach "": Striping Space "" funktioniert. Und schikanieren Moderatoren nicht immer die Benutzer, dass "wenn Sie im Wesentlichen dieselbe Antwort auf zwei getrennte Fragen (in derselben Community) posten, sollten Sie aufhören und stattdessen eine davon als Duplikat kennzeichnen"? G-Man vor 6 Jahren 0
@ G-Man Nein, das stimmt nicht. Dieser Ansatz findet nur die erste ** gepunktete Quad-Adresse (die zufällig eine Zeile ist, die die Zeichenfolge IP4 enthält). Wenn Sie meine Antwort tatsächlich gelesen haben, wird eine Liste mit 3 IP-Adressen angezeigt. Was Ihren zweiten Punkt betrifft, so unterscheidet sich meine Antwort hier erheblich von meiner anderen Antwort. DavidPostill vor 6 Jahren 0
@ G-Man Beachten Sie, dass der Fragentitel eine ** Liste ** von IP-Adressen verlangt, nicht nur die einzelne Adresse mit der Bezeichnung IP4. DavidPostill vor 6 Jahren 0
Und Sie sollten wirklich in Powershell schauen. eckes vor 6 Jahren 0

2 Antworten auf die Frage

1
DavidPostill

Wie kann ich nur eine Liste von IP4-Adressen aus der Ausgabe von ipconfig extrahieren?

Verwenden Sie die folgende Batchdatei (test.cmd):

@echo off setlocal setlocal enabledelayedexpansion for /f "usebackq tokens=2 delims=:" %%a in (`ipconfig ^| findstr /r "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"`) do ( set _temp=%%a rem remove leading space set _ipaddress=!_temp:~1! echo !_ipaddress! ) endlocal 

Verwendungsbeispiel und Ausgabe:

> ipconfig | findstr /r "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*" IPv4 Address. . . . . . . . . . . : 192.168.42.78 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.42.129  > test 192.168.42.78 255.255.255.0 192.168.42.129 

Lesen Sie weiter

  • Ein AZ-Index der Windows-CMD-Befehlszeile - Eine hervorragende Referenz für alles, was mit Windows-Cmd-Zeilen in Verbindung steht.
  • enabledelayedexpansion - Eine verzögerte Erweiterung bewirkt, dass Variablen nicht zur Analysezeit, sondern zur Ausführungszeit erweitert werden.
  • for / f - Schleifenbefehl gegen die Ergebnisse eines anderen Befehls.
  • ipconfig - IP konfigurieren (Internet Protocol-Konfiguration)
  • set - CMD-Umgebungsvariablen anzeigen, festlegen oder entfernen. Mit SET vorgenommene Änderungen bleiben nur für die Dauer der aktuellen CMD-Sitzung erhalten.
  • setlocal - Legen Sie Optionen fest, um die Sichtbarkeit von Umgebungsvariablen in einer Batchdatei zu steuern.
  • variables - Extrahieren Sie einen Teil einer Variablen (Teilzeichenfolge).
0
G-Man

Aufbauend auf der Antwort von DavidPostill auf die Frage, mit der Sie verlinkt haben ,

@echo off setlocal setlocal enabledelayedexpansion rem throw away everything except the IPv4 address line  for /f "usebackq tokens=*" %%a in (`ipconfig ^| findstr IPv4`) do ( rem we have for example "IPv4 Address. . . . . . . . . . . : 192.168.42.78" rem split on ':' and get 2nd token for /f delims^=^:^ tokens^=2 %%b in ('echo %%a') do ( rem we have " 192.168.42.78" rem split on '.' and get 4 tokens (octets) for /f "tokens=1-4 delims=." %%c in ("%%b") do ( set _o1=%%c set _o2=%%d set _o3=%%e set _o4=%%f rem strip leading space from first octet set _4octet=!_o1:~1!.!_o2!.!_o3!.!_o4! echo !_4octet! ) ) ) endlocal 

wird Liste durch die IPv4 - Adressen für alle gemeldeten Schnittstellen ipconfig.