mpi 0 Geschrieben 17. Oktober 2014 Melden Teilen Geschrieben 17. Oktober 2014 (bearbeitet) Hallo zusammen. Ich stehe vor folgendem Problem: Der Server hat n IP Adressen Bsp: 192.168.0.1 (intern) 10.10.10.1 (mgmt) 10.200.x.x (backup) Ich möchte nun NUR die IP Adresse 10.200.x.x in eine Variable übernehmen. Mit dem Befehl ipconfig | findstr /B /C:" IPv4 Address. . . . . . . . . . . : 10.220.">c:\wsus\ip.txt krieg ich sie zumindest schon soweit raus: IPv4 Address. . . . . . . . . . . : 10.200.3.55 Ich will nur die IP 10.200.3.55 in eine variable übernehmen. wie krieg ich das IPv4 Address. . . . . . . . . . . : weg? Würd mich über den berühmten Wink mit dem Zaunpfahl freuen. Grüße mpi bearbeitet 17. Oktober 2014 von mpi Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 17. Oktober 2014 Melden Teilen Geschrieben 17. Oktober 2014 (bearbeitet) Hallo schau mal die Hilfe zur For-Schleife an, for /f Natürlich kann man auch googlen dazu. Viel Erfolg bearbeitet 17. Oktober 2014 von lefg Zitieren Link zu diesem Kommentar
testperson 1.711 Geschrieben 17. Oktober 2014 Melden Teilen Geschrieben 17. Oktober 2014 Hi, muss es eine Batch sein? Wäre Powershell eine Alternative? $CurrentIPs = @(); get-wmiobject win32_networkadapterconfiguration | ? { $_.IPAddress -ne $null } | Sort-Object IPAddress -Unique | % { $CurrentIPs+=$_.IPAddress} Damit hast du schonmal alle IP Adresse des Servers im Array CurrentIPs. Gruß Jan Zitieren Link zu diesem Kommentar
mpi 0 Geschrieben 17. Oktober 2014 Autor Melden Teilen Geschrieben 17. Oktober 2014 Hallo leider ist Power Shell keine Alternative. Soweit hab ich es jetzt @echo off FOR /F "tokens=16 delims= " %%A IN ('ipconfig | findstr /B /C:" IPv4 Address. . . . . . . . . . . : 10.220."') SET IP=%%A echo %IP% pause Klappt nur nicht :( Danke für eure Hilfe mpi Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 17. Oktober 2014 Melden Teilen Geschrieben 17. Oktober 2014 (bearbeitet) Nehme mal das überflüssige @echo off raus, dann kannst Du beobachten. Fehlt da nicht das DO? Du könntest so anfangen FOR /F "tokens=* delims= " %%A IN ('ipconfig') do echo %%A bearbeitet 17. Oktober 2014 von lefg Zitieren Link zu diesem Kommentar
mpi 0 Geschrieben 17. Oktober 2014 Autor Melden Teilen Geschrieben 17. Oktober 2014 Hallo wenn ich das FOR /F "tokens=* delims= " %%A IN ('ipconfig') do echo %%A richtig verstehe - muss die IP dann immer an derselben Stelle stehen? Dem ist aber nicht so. Die IP fängt immer mit 10.220. an. Ansonsten sind sowohl OS, als auch die Anzahl der Netzwerkkarten und deren Reihenfolge nicht fix. Ich muss also in der Ausgabe von ipconfig nach der Zeile suchen in der 10.220 vorkommt. dann alles vor der eigentlichen IP ignorieren und den String 10.220.x.x als variable übernehmen. Mein gedachter Schritt 1 war die betreffende Zeile erstmal in ein txt file zu legen ipconfig | findstr /B /C:" IPv4 Address. . . . . . . . . . . : 10.220.">c:\wsus\ip.txt Das klappt soweit auch Der Ihnhalt von IP.txt sieht so aus IPv4 Address. . . . . . . . . . . : 10.220.3.55 Aber wie ich nun den hinteren Teil der Zeile in eine Variable einlesen will, finde ich nichts mehr was hier zieht. Sofern ich nur immer einen Wert pro Zeile habe klappts einlesen wunderbar. denn das Einlesen von Variablen zeilenweise krieg ich auch hin. Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 17. Oktober 2014 Melden Teilen Geschrieben 17. Oktober 2014 Moin, nimm dies: [Anmelde Skript: IP Adresse und Subnetz als Variable setzen]http://www.gruppenrichtlinien.de/artikel/anmelde-skript-ip-adresse-und-subnetz-als-variable-setzen/ Gruß, Nils Zitieren Link zu diesem Kommentar
mpi 0 Geschrieben 17. Oktober 2014 Autor Melden Teilen Geschrieben 17. Oktober 2014 Hallo Nils Bitte entschuldige, ich verstehs nicht.... ping -n 1 %computername% liefert mir die ersten IPv6 Adresse retour ???? Wenn ich nun diesen Befehl versuche for /f "Tokens=2 Delims=[] skip=1" %%i in ('ping -n 1 %computername%') do set IPAdress=%%i erhalte ich folgenden Fehler C:\Users\Administrator>for /f "Tokens=2 Delims=[] skip=1" %%i in ('ping -n 1 %co mputername%') do set IPAdress=%%i %%i was unexpected at this time. Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 17. Oktober 2014 Melden Teilen Geschrieben 17. Oktober 2014 Moin, insbesondere bei FOR gibt es einen Unterschied zwischen der Verwendung im Batch und auf der Kommandozeile. Direkt im CMD-Fenster musst du ein einzelnes Prozentzeichen angeben, im Batch zwei. Wenn du sichergehen willst, dass du die IPv4-Adresse bekommst, dann erweitere das ping-Kommando um den Schalter -4: for /f "Tokens=2 Delims=[] skip=1" %%i in ('ping -4 -n 1 %computername%') do set IPAdress=%%i Gruß, Nils Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 17. Oktober 2014 Melden Teilen Geschrieben 17. Oktober 2014 (bearbeitet) Eine Möglichkeit rem @echo off for /f "tokens=13 skip=8" %%i in ('ipconfig') do set var=%%i & Goto :end :end echo %var% pause bearbeitet 17. Oktober 2014 von lefg Zitieren Link zu diesem Kommentar
mpi 0 Geschrieben 17. Oktober 2014 Autor Melden Teilen Geschrieben 17. Oktober 2014 (bearbeitet) Hallo Nils, Ah ja... DANKE da lag mein Denkfehler. Jetzt bekomm ich die erste IPv4.. das passt soweit. Aber ich brauch aus den vorhandenen, welche unterschiedlich viele sein können und in unterschiedlicher Reihenfolge immer die 10.220. Hast du dazu evt. auch eine Idee? Danke @lefg auch hier muss die ip an fester stelle stehen, was sie nicht tut. bearbeitet 17. Oktober 2014 von mpi Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 17. Oktober 2014 Melden Teilen Geschrieben 17. Oktober 2014 (bearbeitet) In einer der For/f-Schleife führt ipconfig in Verbindung mit der Pipe und find, findstr zu einem Fehler mit Abbruch, jedenfalls geschieht das bei meinem W7 so beim Ausführen in einer Batch.. An der Eingabeaufforderung funktioniert ipconfig | findstr "IPv4-Adresse" bearbeitet 17. Oktober 2014 von lefg Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 17. Oktober 2014 Melden Teilen Geschrieben 17. Oktober 2014 Moin, das wirst du mit der Ausgabe von ipconfig | find /i "10.220" und einem FOR-Konstrukt mit delims=: hinbekommen. Musst du ein wenig mit basteln. Hab ich grad keine Zeit zu. Gruß, Nils Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 17. Oktober 2014 Melden Teilen Geschrieben 17. Oktober 2014 (bearbeitet) So funktioniert das Finden der Zeile. for /f "tokens=*" %%i in ('ipconfig^|findstr "IPv4-Adresse"') do echo %%i Entscheidend ist das ^ von der Pipe | Und mit Tokens=13 kriege ich die IP. for /f "tokens=13" %%i in ('ipconfig^|findstr "IPv4-Adresse"') do echo %%i bearbeitet 17. Oktober 2014 von lefg Zitieren Link zu diesem Kommentar
testperson 1.711 Geschrieben 17. Oktober 2014 Melden Teilen Geschrieben 17. Oktober 2014 Hi, auf einem System mit englischer Systemsprache wird findstr "IPv4-Adresse" z.B. scheitern. Ggfs. die WMI Abfrage einfach per Batch machen: wmic path win32_networkadapterconfiguration get ipaddress | findstr 10.220. Gruß Jan Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.