Saubere Variable für Netzwerkinterface
Guten morgen zusammen,
ich habe da eine kleines Problem mit der Weiterverarbeitung einer übergebenen Variable.
Ich brauche für die Weiterverarbeitung den Namen des Netzwerkadapters. Da es sich aber um viele verschieden Systeme handelt stoße ich auch auf Verschiedene Rückgabewerte. "LAN-Verbindung", "LAN-Verbindung 2" usw. und wenn ich auf das 2te Token stoße bekomme ich immer ein Leichtes problem, da es mir entweder fehlt oder mir wenn es n nicht vorhanden ist n <space> welches ich da nicht gebrauchen kann reinballert.
meine Lösungsansätze sehen im Moment wiefolgt aus.
oder
Problem ist halt: Lese ich mit 4,5 aus bekomme ich "LAN-Verbindung " zurück andersrum fehlt mir beim auslesen mit nur 4 von "LAN-Verbdung 2" dann später 2
Habt ihr viell. ne Möglichkeit die Variable immer sauber übergeben zu bekommen?
MFG
Marcel
ich habe da eine kleines Problem mit der Weiterverarbeitung einer übergebenen Variable.
Ich brauche für die Weiterverarbeitung den Namen des Netzwerkadapters. Da es sich aber um viele verschieden Systeme handelt stoße ich auch auf Verschiedene Rückgabewerte. "LAN-Verbindung", "LAN-Verbindung 2" usw. und wenn ich auf das 2te Token stoße bekomme ich immer ein Leichtes problem, da es mir entweder fehlt oder mir wenn es n nicht vorhanden ist n <space> welches ich da nicht gebrauchen kann reinballert.
meine Lösungsansätze sehen im Moment wiefolgt aus.
echo off & setlocal
::Ermittlung des Adapternamen
for /f "tokens=2,3 delims=:" %%i in ('ipconfig^|find "Ethernetada"^|find /v "Drah"^|find /v "1394"') do set LANtmp=%%i
for /f "tokens=2,3 delims=:" %%i in ('ipconfig^|find "Ethernetada"^|find /v "Drah"^|find /v "1394"') do set LANtmp2=%%i %%j
::Anpassung der Variable
set LAN=%LANtmp::=%
set LAN2=%LANtmp2::=%
@echo ##############################################
@Echo Festlegen des primaeren DNS-Server 10.16.2.222
@echo ##############################################
netsh interface ip set dns name="%LAN%" static 10.16.2.222>nul
netsh interface ip set dns name="%LAN2%" static 10.16.2.222
@echo ################################################
@echo Festlegen des sekundaeren DNS-Server 10.16.2.223
@echo ################################################
netsh interface ip add dns name="%LAN%" 10.16.2.223>nul
netsh interface ip add dns name="%LAN2%" 10.16.2.223
oder
::Ermittlung des Adapternamen
for /f "tokens=4,5" %%i in ('netsh interface ip show config^|find """"^|find /v "Drah"^|find /v "1394"') do set LANtmp1=%%i %%j
for /f "tokens=4" %%i in ('netsh interface ip show config^|find """"^|find /v "Drah"^|find /v "1394"') do set LANtmp2=%%i
set LAN1=%LANtmp1:"=%
set LAN2=%LANtmp2:"=%
echo.
echo NIC = %LAN1%
echo.
@echo ##############################################
@Echo Festlegen des primaeren DNS-Server 10.16.2.222
@echo ##############################################
netsh interface ip set dns name="%LAN1%" static 10.16.2.222>nul
netsh interface ip set dns name="%LAN2%" static 10.16.2.222
@echo ################################################
@echo Festlegen des sekundaeren DNS-Server 10.16.2.223
@echo ################################################
netsh interface ip add dns name="%LAN1%" 10.16.2.223>nul
netsh interface ip add dns name="%LAN2%" 10.16.2.223
Problem ist halt: Lese ich mit 4,5 aus bekomme ich "LAN-Verbindung " zurück andersrum fehlt mir beim auslesen mit nur 4 von "LAN-Verbdung 2" dann später 2
Habt ihr viell. ne Möglichkeit die Variable immer sauber übergeben zu bekommen?
MFG
Marcel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 161059
Url: https://administrator.de/forum/saubere-variable-fuer-netzwerkinterface-161059.html
Ausgedruckt am: 22.12.2024 um 21:12 Uhr
18 Kommentare
Neuester Kommentar
Hallo eTh0-R!
Versuch es so:
Mit der Verwendung von "%%~j" kannst Du ein Paar Anführungszeichen schon vorweg eliminieren (das andere Paar könntest Du dann eigentlich auch belassen - gerade, um auch für Namen mit Leerzeichen vorzusorgen; allerdings tendiere ich grundsätzlich auch eher dazu, Anführungszeichen erst dann zu setzen, wenn sie tatsächlich benötigt werden und sie daher vorweg nicht in die Variable "mitzunehmen") ...
Grüße
bastla
Versuch es so:
for /f "tokens=3*" %%i in ('netsh interface ip show config^|find """"^|find /v "Drah"^|find /v "1394"') do set "LANtmp2=%%~j"
Grüße
bastla
Moin eTh0-R,
Hmmm....aber vielleicht noch etwas zu tun...?
Schu doch mal oben auf den weissen Fleck unmittelbar nach dem Beitragstitel...
... da wo viele andere andere Beitragsersteller ein Zeichen in Form und Farbe einer geknickten Wanderheuschrecke angepappt haben...
Schönes Wochenende
Biber
Hmmm....aber vielleicht noch etwas zu tun...?
Schu doch mal oben auf den weissen Fleck unmittelbar nach dem Beitragstitel...
... da wo viele andere andere Beitragsersteller ein Zeichen in Form und Farbe einer geknickten Wanderheuschrecke angepappt haben...
Schönes Wochenende
Biber
Das wäre genau, was ich brauche! Leider funktioniert das Script bei mir nicht...
%%i kann syntaktisch an dieser Stelle nicht verarbeitet werden.
Ich brauch eine Variable für die ersten beiden Netzwerkkarten eines Clients. Mithilfe dieser Variable möchte ich zwei netsh Befehle ausführen... (Adressen automatisch beziehen, DHCP)
Clients können XP, VISTA oder Windows 7 sein
Könnt Ihr mit helfen?
%%i kann syntaktisch an dieser Stelle nicht verarbeitet werden.
Ich brauch eine Variable für die ersten beiden Netzwerkkarten eines Clients. Mithilfe dieser Variable möchte ich zwei netsh Befehle ausführen... (Adressen automatisch beziehen, DHCP)
Clients können XP, VISTA oder Windows 7 sein
Könnt Ihr mit helfen?
Hi Bastla,
also als Batch gehts?
Kannst Du mir hier sagen, was ich falsch mache? Ich habe das Script etwas angepasst....
for /f "tokens=3*" %%i in ('netsh interface ip show config^ | find """"^ | find /v "Drah"^ | find /v "1394"') do set "LANtmp2=%%~j"
set LAN1=%LANtmp1:"=%
set LAN2=%LANtmp2:"=%
echo NIC = %LAN1%
netsh interface ip set address name="%LAN1%" source=dhcp
netsh interface ip set dns name="%LAN2%" source=dhcp
Grüße
also als Batch gehts?
Kannst Du mir hier sagen, was ich falsch mache? Ich habe das Script etwas angepasst....
for /f "tokens=3*" %%i in ('netsh interface ip show config^ | find """"^ | find /v "Drah"^ | find /v "1394"') do set "LANtmp2=%%~j"
set LAN1=%LANtmp1:"=%
set LAN2=%LANtmp2:"=%
echo NIC = %LAN1%
netsh interface ip set address name="%LAN1%" source=dhcp
netsh interface ip set dns name="%LAN2%" source=dhcp
Grüße
Hallo Ben.it!
Dann sollte doch eigentlich etwas in der Art genügen:
Das "
Grüße
bastla
[Edit] Unnötige Leerzeichen entfernt [/Edit]
Dann sollte doch eigentlich etwas in der Art genügen:
for /f "tokens=3*" %%i in ('netsh interface ip show config^|find """"^|find /v "Drah"^|find /v "1394"') do (
echo netsh interface ip set address name=%%~j source=dhcp
)
echo
" in Zeile 2 dient zum Testen, da so der "netsh
"-Befehl nur angezeigt, aber noch nicht ausgeführt wird ...Grüße
bastla
[Edit] Unnötige Leerzeichen entfernt [/Edit]
sorry, entweder stell ich mich einfach zu blöd an oder wir haben da einfach grundlegend etwas falsch drin...
egal ob Batch oder CMD: ich bekomm meine lokale Netzwerkkarte nicht auf DHCP gestellt mit den Befehlen.
Im Endeffekt möchte ich ja eine Gruppenrichtlinie erstellen, die beide Netzwerkkarten auf DHCP stellt...
Also im Endeffekt soll es mit Batch laufen.
Wenn ich die Batch ausführe, geschieht jedoch nichts, das Fenster wird gleich wieder geschlossen, auch wenn PAUSE aufgeführt ist
bei eth0-R scheint es ja wiefolgt funktioniert zu haben:
echo off & setlocal
for /f "tokens=2,3 delims=:" %%i in ('ipconfig^|find "Ethernetada"^|find /v "Drah"^|find /v "1394"') do set LANtmp=%%i
for /f "tokens=2,3 delims=:" %%i in ('ipconfig^|find "Ethernetada"^|find /v "Drah"^|find /v "1394"') do set LANtmp2=%%i %%j
set LAN=%LANtmp::=%
set LAN2=%LANtmp2::=%
netsh interface ip set dns name="%LAN%" static 10.16.2.222>nul
netsh interface ip set dns name="%LAN2%" static 10.16.2.222
egal ob Batch oder CMD: ich bekomm meine lokale Netzwerkkarte nicht auf DHCP gestellt mit den Befehlen.
Im Endeffekt möchte ich ja eine Gruppenrichtlinie erstellen, die beide Netzwerkkarten auf DHCP stellt...
Also im Endeffekt soll es mit Batch laufen.
Wenn ich die Batch ausführe, geschieht jedoch nichts, das Fenster wird gleich wieder geschlossen, auch wenn PAUSE aufgeführt ist
bei eth0-R scheint es ja wiefolgt funktioniert zu haben:
echo off & setlocal
for /f "tokens=2,3 delims=:" %%i in ('ipconfig^|find "Ethernetada"^|find /v "Drah"^|find /v "1394"') do set LANtmp=%%i
for /f "tokens=2,3 delims=:" %%i in ('ipconfig^|find "Ethernetada"^|find /v "Drah"^|find /v "1394"') do set LANtmp2=%%i %%j
set LAN=%LANtmp::=%
set LAN2=%LANtmp2::=%
netsh interface ip set dns name="%LAN%" static 10.16.2.222>nul
netsh interface ip set dns name="%LAN2%" static 10.16.2.222
beziehungsweise:
for /f "tokens=4,5" %%i in ('netsh interface ip show config^|find """"^|find /v "Drah"^|find /v "1394"') do set LANtmp1=%%i %%j
for /f "tokens=4" %%i in ('netsh interface ip show config^|find """"^|find /v "Drah"^|find /v "1394"') do set LANtmp2=%%i
fällt dir nichts ein? Danke für Deine Hilfe!
Grüße
for /f "tokens=4,5" %%i in ('netsh interface ip show config^|find """"^|find /v "Drah"^|find /v "1394"') do set LANtmp1=%%i %%j
for /f "tokens=4" %%i in ('netsh interface ip show config^|find """"^|find /v "Drah"^|find /v "1394"') do set LANtmp2=%%i
fällt dir nichts ein? Danke für Deine Hilfe!
Grüße
Hallo Ben.it!
Grüße
bastla
fällt dir nichts ein?
Mir fällt etwas auf - Du bist weiterhin weder willens, Code passend formatiert zu posten, noch scheinst Du verstanden zu haben, was das "echo
" in meinem Code-Vorschlag oben bedeutet (und was daher passieren würde, wenn Du es weg lässt) ...Grüße
bastla