Werte aus IP-Config als Variable setzen?
ipconfig -> ip filtern -> ip bzw. ganze zeile als variable speichern . . .
Moin Leute!
Ich hab auf der Arbeit das Problem das die Datenbank mit den IP's vorne und hinten nicht stimmt.
Ich habe nun eine Batch-routine geschrieben die ich in das Novell-Anmeldescript mit integriert habe.
Diese Speichert automatisch bei jeder anmeldung die ipconfig in einer .txt mit entsprechendem usernamen . . .
Aber was ist mit den leuten die mehrere Rechner haben? Sie haben mehrere IP's aber nur einen Usernamen . . .
Ich brauche nun die IP-Adresse als variable . . . wie setze ich diese?
Hier die Batch . . .
@echo off
if exist ip%NWUSERNAME%.txt goto jump
goto ip
:ip
ipconfig /all > \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt
:jump
--> Hier brauch ich hilfe . . . wie setze ich die werte als Variable ??? <------
set var1=ipconfig /all | find /i "ip-adresse"
set var2=find /i \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt "ip-adresse"
if %var1%==%var2%
goto jump2
if not ipconfig /all >> \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt
:jump2
Ich würde mich sehr Freuen wenn mir jemand helfen könnte!
Danke im voraus!!!
mfg
BrotoX
Moin Leute!
Ich hab auf der Arbeit das Problem das die Datenbank mit den IP's vorne und hinten nicht stimmt.
Ich habe nun eine Batch-routine geschrieben die ich in das Novell-Anmeldescript mit integriert habe.
Diese Speichert automatisch bei jeder anmeldung die ipconfig in einer .txt mit entsprechendem usernamen . . .
Aber was ist mit den leuten die mehrere Rechner haben? Sie haben mehrere IP's aber nur einen Usernamen . . .
Ich brauche nun die IP-Adresse als variable . . . wie setze ich diese?
Hier die Batch . . .
@echo off
if exist ip%NWUSERNAME%.txt goto jump
goto ip
:ip
ipconfig /all > \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt
:jump
--> Hier brauch ich hilfe . . . wie setze ich die werte als Variable ??? <------
set var1=ipconfig /all | find /i "ip-adresse"
set var2=find /i \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt "ip-adresse"
if %var1%==%var2%
goto jump2
if not ipconfig /all >> \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt
:jump2
Ich würde mich sehr Freuen wenn mir jemand helfen könnte!
Danke im voraus!!!
mfg
BrotoX
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 43970
Url: https://administrator.de/contentid/43970
Ausgedruckt am: 26.11.2024 um 01:11 Uhr
32 Kommentare
Neuester Kommentar
Tut mir Leid, BrotoX,
wenn Dein Problem mit Batch lösbar wäre, dann würde ja eine Forumssuche nach "ipconfig Batch" über 1200 Threads und über 6000 Kommentare liefern.
Aber anscheinend betrittst Du völliges Neuland mit Deiner Anforderung...
Vielleicht geht es später mal mit der Vista PowerShell 3.0?
Bedauernd
Biber
wenn Dein Problem mit Batch lösbar wäre, dann würde ja eine Forumssuche nach "ipconfig Batch" über 1200 Threads und über 6000 Kommentare liefern.
Aber anscheinend betrittst Du völliges Neuland mit Deiner Anforderung...
Vielleicht geht es später mal mit der Vista PowerShell 3.0?
Bedauernd
Biber
Hi,
und was ist wenn 2 ipconfig's in einer Textdatei ist. Dann läuft find nur einmal durch!
Ich hab leider keine Zeit, den Spass zu testen!! Sorry...
Gruß
Dani
und was ist wenn 2 ipconfig's in einer Textdatei ist. Dann läuft find nur einmal durch!
@echo off
if exist ip%NWUSERNAME%.txt (
::--> Hier brauch ich hilfe . . . wie setze ich die werte als Variable ??? <------
::set var1=ipconfig /all | find /i "ip-adresse"
FOR /f "tokens=2 delims=:" %%i IN ('ipconfig /all ^| FIND "IP-Adre"') DO (
:: set var2=find /i \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt "ip-adresse"
FOR /f "tokens=2 delims=:" %%k IN ('find /i \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt "ip-adresse"') DO (
if %%i NEQ %%K (
ipconfig /all >> \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt
break;
)
)
)
)
if not exist ip%NWUSERNAME%.txt ipconfig /all >> \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt
Gruß
Dani
Hallo Brotox,
versuche es mal so:
For /F "tokens=2 Delims=:" %%i in ('ipconfig /all^|Findstr /i /c:"IP Address"') Do @set IP=%%i
echo IP=%IP%
Damit bekommst du die (bei mehreren Netzwerkadaptern: letzte) IP-Adresse zurück.
Du könntest das noch aussieben, wenn du in der FOR-Anweisung noch zusätzlich nach einem weitreren String suchst (einen Teil der bekannten IP-Adresse).
Weiterhin suche ich nach einem Text "IP Address" ... für die dt. Windows-Version musst du das ggf. anpassen.
Viele Grüsse
-= Axel =-
[Nachtrag]
du kannst auch eine Liste aller IP-Adressen in eine Variable packen - hier mal mit __ getrennt. Auf jeden Fall wird dein Dateiname rechnerspezifisch und damit eindeutig.
{
Set IP=
For /F "tokens=2 Delims=:" %%i in ('ipconfig /all^|Findstr /i /c:"IP Address"') Do call :addIP %%i
echo IP=%IP%
set logfile=%COMPUTERNAME%_%USERNAME%_%IP%.txt
echo logfile=%logfile%
pause && exit
:addIP
Set IP=%IP%%1___
}
[/Nachtrag]
versuche es mal so:
For /F "tokens=2 Delims=:" %%i in ('ipconfig /all^|Findstr /i /c:"IP Address"') Do @set IP=%%i
echo IP=%IP%
Damit bekommst du die (bei mehreren Netzwerkadaptern: letzte) IP-Adresse zurück.
Du könntest das noch aussieben, wenn du in der FOR-Anweisung noch zusätzlich nach einem weitreren String suchst (einen Teil der bekannten IP-Adresse).
Weiterhin suche ich nach einem Text "IP Address" ... für die dt. Windows-Version musst du das ggf. anpassen.
Viele Grüsse
-= Axel =-
[Nachtrag]
du kannst auch eine Liste aller IP-Adressen in eine Variable packen - hier mal mit __ getrennt. Auf jeden Fall wird dein Dateiname rechnerspezifisch und damit eindeutig.
{
Set IP=
For /F "tokens=2 Delims=:" %%i in ('ipconfig /all^|Findstr /i /c:"IP Address"') Do call :addIP %%i
echo IP=%IP%
set logfile=%COMPUTERNAME%_%USERNAME%_%IP%.txt
echo logfile=%logfile%
pause && exit
:addIP
Set IP=%IP%%1___
}
[/Nachtrag]
ich wollte damit nur sagen, dass dieses Tool dein Netzwerk scannt, die IP, den Rechnernamen und den angemeldeten User auflistet.
Psycho
Psycho
...das käme auf einen Versuch an! Ich hab hier kein Novell (mehr).
Psycho
Psycho
Jetzt habe ich noch ein Verständnisproblem:
Die Liste der Netzwerkkarten ist rein Rechnerspezifisch - egal welcher Benutzer sich an dieser Kiste anmeldet - es werden dieselben Netzwerkkarten drin sein.
Wenn du zu jedem Benutzernamen alle seine IPs wissen willst, kannst du die Datei mit Benutzernamen aber ohne Rechner/ IP anlegen.
oder meinst du nochwas anderes??
Viele Grüsse
-= Axel =-
Die Liste der Netzwerkkarten ist rein Rechnerspezifisch - egal welcher Benutzer sich an dieser Kiste anmeldet - es werden dieselben Netzwerkkarten drin sein.
Wenn du zu jedem Benutzernamen alle seine IPs wissen willst, kannst du die Datei mit Benutzernamen aber ohne Rechner/ IP anlegen.
set logfile=\\server\share\%NWUSERNAME%.txt
echo START
For /F "tokens=2 Delims=:" %%i in ('ipconfig /all^|Findstr /i /c:"IP Address"') Do call :addIP %%i
echo FERTIG
goto EOF
:addIP
echo teste %1
:: ipconfig wird nur dann hinjzugefügt, wenn die IP nicht im Text ist:
findstr "%1" "%logfile%" >nul || ipconfig /all >>"%logfile%"
goto EOF
oder meinst du nochwas anderes??
Viele Grüsse
-= Axel =-
Sorry, wenn ich mich noch mal einmenge.
Unabhängig von den handwerklichen Problem in der obigen Skizze ist die Strategie IMHOBullshit suboptimal.
- In der "IPConfig /all"-Ausgabe stehen ein oder mehrere Zeilen der Form:
"IP-Adresse..............: xxx.yyy.zzz.nnn"
Okay.
Aber auch jede Menge andere Zeilen mit xxx.yyy.zzz.nnn-Nummern.
- In der angesammelten %username%...IpconfigSammelsurium.txt stehen aneinandergereihte "IPConfig /all"-Ausgaben aus 12 Jahrhunderten.
- Gesucht wird in der "%username&...IpconfigSammelsurium.txt" aber nur nach "xxx.yyy.zzz.nnn", nicht nach der kompletten Zeile mit "IP-Adresse.....:xxx.yyy.zzz.nnn"
Kann nicht verlässlich sein.
Wenn schon, musst Du mit zwei Dateien arbeiten.
Eine, die nur jeweils die "IP-Adresse.......xxx.yyy.zzz.nnn"-Zeilen enthält.
Und (wenn Du die sinnvoll brauchen kannst) dieses IPConfig-All-Sammelbecken.
Wobei ich immer noch nicht verstehe, wozu denn alle jemals zugewiesenen IPs gesammelt werden sollen.
Gruß
Biber
Unabhängig von den handwerklichen Problem in der obigen Skizze ist die Strategie IMHO
- In der "IPConfig /all"-Ausgabe stehen ein oder mehrere Zeilen der Form:
"IP-Adresse..............: xxx.yyy.zzz.nnn"
Okay.
Aber auch jede Menge andere Zeilen mit xxx.yyy.zzz.nnn-Nummern.
- In der angesammelten %username%...IpconfigSammelsurium.txt stehen aneinandergereihte "IPConfig /all"-Ausgaben aus 12 Jahrhunderten.
- Gesucht wird in der "%username&...IpconfigSammelsurium.txt" aber nur nach "xxx.yyy.zzz.nnn", nicht nach der kompletten Zeile mit "IP-Adresse.....:xxx.yyy.zzz.nnn"
Kann nicht verlässlich sein.
Wenn schon, musst Du mit zwei Dateien arbeiten.
Eine, die nur jeweils die "IP-Adresse.......xxx.yyy.zzz.nnn"-Zeilen enthält.
Und (wenn Du die sinnvoll brauchen kannst) dieses IPConfig-All-Sammelbecken.
Wobei ich immer noch nicht verstehe, wozu denn alle jemals zugewiesenen IPs gesammelt werden sollen.
Gruß
Biber
EINE datei die EINDEUTIG ist und nicht alle user in einer datei aneinandergeriht
Nein, das habe ich auch nicht angenommen oder geschrieben.
Aber EINE User-spezifische Datei, die ein, zwei, drei oder 487 "IPConfig /All"-Ausgaben enthalten kann.
Falls dieser User im Laufe seines Arbeitsverhältnisses in einer Firma mal verschiedene IPs zugewiesen bekommt.
Und das versteh ich nicht...wozu willst Du die sammeln?
Gruß
Biber
Moin Brotox,
vielleicht ist das führende Leerzeichen bei der "IPConfig /All"-Auswertung das Problem bei Dir... das lässt sich aber ohne den echten Code nicht erkennen.
Probier es bitte mal mit folgenden Anpassungen (ausgehend von AxelHahn's Variante vom 8.11.):
Gruß
Biber
vielleicht ist das führende Leerzeichen bei der "IPConfig /All"-Auswertung das Problem bei Dir... das lässt sich aber ohne den echten Code nicht erkennen.
Probier es bitte mal mit folgenden Anpassungen (ausgehend von AxelHahn's Variante vom 8.11.):
@echo off & setlocal
Set "iplisted=192.168.0.1"
REM Die IP, mit der verglichen werden soll: OHNE führendes Leerzeichen; OHNE Anführungszeichen
For /F "tokens=2 Delims=:" %%i in ('ipconfig /all^|Findstr /i /c:"IP-Adresse"') Do For %%j in (%%i) do Set "ipReal=%%j"
REM Die IP aus IPConfig /All: OHNE führendes Leerzeichen; OHNE Anführungszeichen
REM Kontrolle :
Echo IPlisted: [%iplisted%] ...IPReal: [%ipReal%]
REM Kontrolle
Echo DEBUG...Nächster Befehl: if "%ipreal%"=="%iplisted%" goto end
if "%ipreal%"=="%iplisted%" goto end
Echo DEBUG...Nächster Befehl: if not "%ipreal%"=="%iplisted%" ipconfig /all ^> ip%NWUSERNAME%.txt
if not "%ipreal%"=="%iplisted%" ipconfig /all > ip%NWUSERNAME%.txt
REM usw......
:end
Gruß
Biber