volker01
Goto Top

Mehrere unbekannte IP-Adressen aus Text Datei in Variablen übernehmen.

Hallo,

ich möchte IP-Adressen aus IPconfig in Variablen übernehmen.

Die Liste habe ich mit findstr gefiltert.
Es bleibt übrig:
   IPv4-Adresse  . . . . . . . . . . : 192.168.178.10(Bevorzugt) 
   IPv4-Adresse  . . . . . . . . . . : 192.168.181.10(Bevorzugt) 

(Mit findstr bekomme ich (Bevorzugt) nicht weg.)
Die IP-Adressen sind im Vorfeld nicht bekannt, auch die Anzahl könnte variieren.

Wie bekommen ich die IP-Adressen in Variablen in der Form:
%%a.%%b.%%c.%%d ?

Vg Volker01

Content-ID: 205656

Url: https://administrator.de/forum/mehrere-unbekannte-ip-adressen-aus-text-datei-in-variablen-uebernehmen-205656.html

Ausgedruckt am: 23.12.2024 um 07:12 Uhr

Noobstar0815
Noobstar0815 25.04.2013 um 15:17:11 Uhr
Goto Top
Würde sagen mit "set", kenn die genaue Syntax aber nicht dafür, müsstest du mit "set /?" raussuchen
volkerw
volkerw 25.04.2013 um 16:06:09 Uhr
Goto Top
Hallo Volker01,

so sollte das funktionieren -> Roh-Ips in Liste.txt und dann diesen Schritt ausfuehren:

FOR /f "delims=" %%I IN (Liste.txt) DO (
SET STR0=%%I
SETLOCAL EnableDelayedExpansion
SET STR1=!STR0:IPv4-Adresse . . . . . . . . . . : =!
SET STR2=!STR1:^(Bevorzugt^)=!
FOR /F "tokens=1-4 delims=." %%A IN ("!STR2!") DO @echo %%A %%B %%C %%D
ENDLOCAL
)

Gruss
VolkerW
Endoro
Endoro 25.04.2013 aktualisiert um 17:38:43 Uhr
Goto Top
Hallo Leute, €dit einmal kräftig schütteln:
@echo off&setlocal 
set "string=IPv4-Adresse  . . . . . . . . . . : 192.168.181.10(Bevorzugt) "  
for /f "tokens=2-5delims=:(. " %%i in ("%string%") do set /a o1=%%i, o2=%%j, o3=%%k, o4=%%l  
echo %o1%.%o2%.%o3%.%o4%


Gruss!
volker01
volker01 25.04.2013 um 22:08:21 Uhr
Goto Top
Hallo VolkerW,

danke für Deine Rückemeldung. Dein Ansatz ist interessant.
(Auch wenn der Code momentan meinen Horizont übersteigt face-wink)
tokens=1-4 ergibt das Wort "IP-Adresse".
Ich habs mit try and error geändert:
tokens=11-14 ergibt:
: 192.168.178.10
: 192.168.181.10
Leer, Doppelpunkt, Leer habe ich noch nicht weg bekommen.
Das Ergebnis schreibe ich in eine eine neue Textdatei. ich erhalte damit eine IP-Liste.
Im Ergebnis benötige ich jeden IP-Bock jeder IP-Adresse als Variable.

Vg Volker01
volkerw
volkerw 26.04.2013 aktualisiert um 09:24:46 Uhr
Goto Top
Hallo Volker01,

in meinem ersten Vorschlag fehlt ein Leerzeichen hinter IPv4-Adresse, gemeiner Fehler, kaum zu sehen. Wenn du nur die Liste der IPs brauchst, kannst du dir die zweite FOR-Schleife sparen, so sieht's dann aus:

@ECHO OFF
IF EXIST Liste2.txt DEL Liste2.txt
FOR /f "delims=" %%I IN (Liste.txt) DO (  
SET STR0=%%I
SETLOCAL EnableDelayedExpansion
SET STR1=!STR0:IPv4-Adresse  . . . . . . . . . . : =!
SET STR2=!STR1:^(Bevorzugt^)=!
ECHO !STR2!>> Liste2.txt
::FOR /F "tokens=1-4 delims=." %%A IN ("!STR2!") DO ECHO %%A %%B %%C %%D 
ENDLOCAL
)
Noch einmal, zwischen Adresse und dem . müssen 2 Leerzeichen sein. So habe ich das eingefügt, doch "Vorschau erstellen" unterschlägt eins davon. Musst du also händisch hinzufügen, dann geht's.

Viel Erfolg
VolkerW

[Edit Biber] Codeformat. Macht es vielleicht leichter erkennbar. [/Edit]
volker01
volker01 27.04.2013 um 00:37:01 Uhr
Goto Top
Hallo VolkerW,

danke für Deine Unterstützung, ja so geht's.
Das filtern einzelner Zeilen mache ich dann so:

for /F "eol=? delims=?" %%i in (iplist.txt) do (  
  echo %%i
  goto EndeSchleife1
  )
  :EndeSchleife1

for /F "skip=1 eol=? delims=?" %%i in (iplist.txt) do (  
  echo %%i
  goto EndeSchleife2
  )
  :EndeSchleife2
usw.

Vg Volker01