Batch IP Adresse herausfinden und Oktette zerlegen
Hallo,
ich habe das Problem, dass ich bei einer Softwareverteilung dies nur auf einen bestimmten IP-Adressbereich verteilen kann, aber die Rechnernamen nach gleicher Syntax aufgebaut sind XX-YY-[001-***]
Jetzt sollte die Batch vor starten der Verteilung jeden Rechner auf die IP überprüfen und zwar müssen die ersten 3 Oktette 192.168.123. sein.
Ich hab schon einige Zeit mit Googeln und Testen verbracht, jedoch ohne Erfolg.
Wäre nett, wenn mir jemand einen Tipp geben könnte.
Vielen Dank im Vorraus!
Kim
ich habe das Problem, dass ich bei einer Softwareverteilung dies nur auf einen bestimmten IP-Adressbereich verteilen kann, aber die Rechnernamen nach gleicher Syntax aufgebaut sind XX-YY-[001-***]
Jetzt sollte die Batch vor starten der Verteilung jeden Rechner auf die IP überprüfen und zwar müssen die ersten 3 Oktette 192.168.123. sein.
Ich hab schon einige Zeit mit Googeln und Testen verbracht, jedoch ohne Erfolg.
Wäre nett, wenn mir jemand einen Tipp geben könnte.
Vielen Dank im Vorraus!
Kim
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 111960
Url: https://administrator.de/forum/batch-ip-adresse-herausfinden-und-oktette-zerlegen-111960.html
Ausgedruckt am: 23.12.2024 um 00:12 Uhr
7 Kommentare
Neuester Kommentar
Hier ein Ansatz an der If Schleife und deren GOTOS kannst du dich dann austoben.
grüße
grüße
@echo off & setlocal
ipconfig >%temp%\DanisIp.txt
REM -- bzw. "Ethernetadapter LAN-Verbindung: steht
REM - Die Zeilennummer wird in Blockstart gespeichert
for /f "delims=:" %%i in ('findstr /n "\<LAN-Verbindung\>" %temp%\DanisIp.txt') do set /a Blockstart=%%i
REM Zeilen überspringen
set /a BlockStart+=3
REM Aus der entsprechenden Zeile die IP-Adresse auslesen bzw. splitten
for /f "tokens=14 delims=: " %%i in ('findstr /n "." %temp%\DanisIp.txt^|findstr "%blockstart%:"') do set "theIp=%%i"
echo Ermittelte IP ist [%theIP%]
del %temp%\DanisIp.txt
for /f "tokens=1,2,3 delims=." %%i in ('echo %theIp%') do set IPSuff=%%i.%%j.%%k
echo %IPSuff%
IF "%IPSuff%" == "192.168.172" (
goto treffer
) ELSE (
goto nontreffer
)
:treffer
REM Hier der Teil wenn die IP passt
echo foobab
:nontreffer
REM Hier der Teil wo die IP nicht passt
echo fasl
Moin Kim,
Ja, bei mir funktioniert es.
Allerdings ist in meinem Beispiel die Variable %rechnername% wirklich nur ein Platzhalter.
Der nächste Schritt wäre dann, eine erweiterbare Test-Zeile am CMD-Prompt aufzubauen:
...und diese (wenn es bis hierhin klappt) zu erweitern auf
... damit auch die Computer-nicht-erreichbar-Fälle angetestet sind.
Statt der einfachen FOR-Anweisung kannst Du auch aus einer Rechnernamen-Tetdatei lesen mit FOR /F. [For /F %i in (meinerechner.txt) do... ]
Im Batch vor der Laufvariablen ein Prozentzeichen mehr als am CMD-Prompt (%%i statt %i).
Grüße
Biber
Ja, bei mir funktioniert es.
Allerdings ist in meinem Beispiel die Variable %rechnername% wirklich nur ein Platzhalter.
- Testen am CMD-Prompt kannst Du ja, wenn Du gegen Deinen eigenen Rechner %computername% pingst
ping %computername% -n 1|find "[192.168"
for %i in (%computername%) @do ping %i -n 1|find "[192.168"
for %i in (%computername% unknown1 unknown2) @do ping %i -n 1|find "[192.168"
Statt der einfachen FOR-Anweisung kannst Du auch aus einer Rechnernamen-Tetdatei lesen mit FOR /F. [For /F %i in (meinerechner.txt) do... ]
Im Batch vor der Laufvariablen ein Prozentzeichen mehr als am CMD-Prompt (%%i statt %i).
Grüße
Biber