Ich möchte nur die IP-Adressen aus den erfolgreichen Pings holen
Ich werde nicht versuchen, den zweiten Teil Ihrer Batchdatei zu reparieren, es ist einfacher, sie von Grund auf zu schreiben.
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! ) ) ) for /l %%i in (1,1,254) do ( rem do the ping and grab the 3rd token (ip address) if it succeeds (TTL= is found) for /f "usebackq tokens=3" %%j in (`ping -n 1 !_3octet!%%i ^| find "TTL="`) do ( rem we have ip address with a trailing : rem split on . and get the 4th token (last octet) rem we don't need the first 3 as they are already in !_3octet! for /f "tokens=4 delims=." %%k in ("%%j") do ( set _o4=%%k rem strip trailing : from last octet set _4octet=!_o4:~0,-1! echo !_4octet! ) ) ) endlocal
Anmerkungen:
Der gewünschte Wert wird in
!_3octet!!_4octet!
wo gespeichert! _3octet! ist wie zuvor
! _4octet! ist das letzte Oktett (Sie müssen die ersten 3 Oktetts nicht zweimal extrahieren!)
Du brauchst nicht
cd C:\Windows
Eine der IP-Adressen ist Ihre Gateway-Adresse (Router-Adresse). Sie möchten wahrscheinlich nicht versuchen,
shutdown
das Gateway auszuführen.
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).