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

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

Ich versuche, cmd dazu zu bringen, nur einen bestimmten Zeichensatz aus einer Befehlsausgabe zu kopieren. Ich konnte die Zeile auswählen, in der die Phrase vorkommt, aber von da an bin ich verloren. Hier ist mein bisheriger Befehl.

ipconfig | findstr /i "ipv4"

Ich bin sicher, Sie kennen den ipconfigBefehl und den findstrBefehl. Im Grunde isoliere ich die IPv4-Adresse des jeweiligen Computers. Dies ist der obige Befehl.

IPv4 Address. . . . . . . . . . . : 192.168.1.75

Ich möchte "192.168.1." isolieren und in einer Variable speichern, um sie später in einem Befehl verwenden zu können. Nehmen wir an, ich lege "192.168.1." auf die Variable fest a.

Der nächste Befehl, den ich ausführen möchte, scannt alle IP-Adressen von 192.168.1.1 bis 192.168.1.254 und speichert die verwendeten. Da dieses baldige Programm auf verschiedenen Computern an verschiedenen Standorten ausgeführt wird, ist „192.168.1.“ unterschiedlich und ich möchte alles isolieren, was cmd an diesem Standort eingibt. Die oben genannte VariableAkönnte, ist aber nicht beschränkt auf, 192.168.10., 10.10.10. oder sogar 1.1.1. sein, je nach Situation. Hier ist der Code, den ich verwenden werde.

FOR /L %i IN (1,1,254) DO ping -n 1 (the 'a' variable)%i | FIND /i "bytes=">>c:\ipaddresses.txt

oder ob es hilfreich ist, zu sehen, wie die Variable aussehen wird.

FOR /L %i IN (1,1,254) DO ping -n 1 192.168.1.%i | FIND /i "bytes=">>c:\ipaddresses.txt

Ich verwende eine 64-Bit-Maschine mit Windows 10 Pro.

Antwort1

Ich möchte "192.168.1." isolieren und in einer Variable speichern

Verwenden Sie die folgende Batchdatei (test.cmd):

@echo off
setlocal
setlocal enabledelayedexpansion
rem throw away everything except the IPv4 address line 
for /f "usebackq tokens=*" %%a in (`ipconfig ^| findstr /i "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 _3octet=!_o1:~1!.!_o2!.!_o3!.
      echo !_3octet!
      )
    )
  )
rem add additional commands here
endlocal

Anmerkungen:

  • Der gewünschte Wert wird gespeichert in_3octet
  • Entfernen Sie das echo, das zum Debuggen da ist
  • Ersetzen Sie rem add additional commands heredurch Ihren „Netzwerk-Ping“

Beispielverwendung und -ausgabe:

F:\test>ipconfig | findstr /i "ipv4"
   IPv4 Address. . . . . . . . . . . : 192.168.42.78

F:\test>test
192.168.42.

Weitere Informationen

  • Ein AZ-Index der Windows CMD-Befehlszeile- Ein hervorragendes Nachschlagewerk zu allem, was mit der Windows-Eingabeaufforderung zu tun hat.
  • aktivierte verzögerte Erweiterung- Die verzögerte Erweiterung führt dazu, dass Variablen zur Ausführungszeit und nicht zur Analysezeit erweitert werden.
  • für /f- Befehl mit den Ergebnissen eines anderen Befehls wiederholen.
  • ipconfig- IP konfigurieren (Internet Protocol-Konfiguration)
  • Satz- CMD-Umgebungsvariablen anzeigen, festlegen oder entfernen. Mit SET vorgenommene Änderungen bleiben nur für die Dauer der aktuellen CMD-Sitzung bestehen.
  • lokal festlegen- Legen Sie Optionen fest, um die Sichtbarkeit von Umgebungsvariablen in einer Batchdatei zu steuern.
  • Variablen- Extrahieren Sie einen Teil einer Variablen (Teilzeichenfolge).

Antwort2

Das funktioniert bei mir auf mehreren Computern:

for /F "tokens=14" %A in ('"ipconfig | findstr IPv4"') do echo %A

Antwort3

Versuchen Sie so etwas. "ipconfig /all > network_info.txt" erstellt einfach eine txt-Datei für das Programm

ipconfig /all > network_info.txt
type network_info.txt | findstr /v Stuff | findstr /v Etc > whatyouwant.txt
set /p Build=<whatyouwant.txt

Diese Option ist zeitaufwendig, aber unglaublich einfach. Sie müssten immer wieder

| findstr /v something

und ersetzen Sie das Wort durch das gewünschte. Sie müssen entscheiden, wie Sie bestimmte Wörter aus verschiedenen Zeilen entfernen möchten, aber dies würde funktionieren, wenn Sie es einfach haben möchten. Ich verwende dies bei Ausgaben für Befehle, um Müll zu entfernen, den ich nicht haben möchte. Sie würden die Ausgabe idealerweise in einem Text erhalten und die erste Zeile würde gelesen, sodass Sie nur eine Zeile des Textes hätten. Ich hoffe, ich habe geholfen oder jemandem geholfen, der diese Antwort brauchte. Es ist verworren, aber Sie erhalten Ihre Antwort auch in einem Text, wenn das ein Plus ist

Antwort4

Zur Zuweisung von IP-Adressen an fortlaufend nummerierte Umgebungsvariablen (IP1, IP2). Für Systeme mit mehreren Netzwerkadaptern.

@echo off
setlocal enabledelayedexpansion
set _count=1
for /f "usebackq tokens=*" %%a in (`ipconfig ^| findstr /i "ipv4"`) do (
    for /f delims^=^:^ tokens^=2 %%b in ('echo %%a') do (
        for /f "tokens=*" %%c IN ('echo %%b') do (set IP!_count!=%%c & echo IP!_count!=%%c & set /a _count+= 1)
  )
)
set _count=
call :haltAndStore 2> nul

REM kludge: Forces batch processor to abort causing side-effect of persisting env vars.
:haltAndStore
()

verwandte Informationen