Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Saubere Variable für Netzwerkinterface

Frage Entwicklung Batch & Shell

Mitglied: eTh0-R

eTh0-R (Level 1) - Jetzt verbinden

18.02.2011, aktualisiert 18.10.2012, 4125 Aufrufe, 18 Kommentare

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.

01.
echo off & setlocal 
02.
 
03.
	::Ermittlung des Adapternamen 
04.
	for /f "tokens=2,3 delims=:" %%i in ('ipconfig^|find "Ethernetada"^|find /v "Drah"^|find /v "1394"') do set LANtmp=%%i 
05.
	for /f "tokens=2,3 delims=:" %%i in ('ipconfig^|find "Ethernetada"^|find /v "Drah"^|find /v "1394"') do set LANtmp2=%%i %%j 
06.
	::Anpassung der Variable 
07.
	set LAN=%LANtmp::=% 
08.
        set LAN2=%LANtmp2::=% 
09.
 
10.
	@echo ############################################## 
11.
	@Echo Festlegen des primaeren DNS-Server 10.16.2.222 
12.
	@echo ############################################## 
13.
	netsh interface ip set dns name="%LAN%" static 10.16.2.222>nul 
14.
	netsh interface ip set dns name="%LAN2%" static 10.16.2.222  
15.
	@echo ################################################ 
16.
	@echo Festlegen des sekundaeren DNS-Server 10.16.2.223 
17.
	@echo ################################################ 
18.
	netsh interface ip add dns name="%LAN%" 10.16.2.223>nul 
19.
	netsh interface ip add dns name="%LAN2%" 10.16.2.223
oder

01.
	::Ermittlung des Adapternamen 
02.
	for /f "tokens=4,5" %%i in ('netsh interface ip show config^|find """"^|find /v "Drah"^|find /v "1394"') do set LANtmp1=%%i %%j 
03.
	for /f "tokens=4" %%i in ('netsh interface ip show config^|find """"^|find /v "Drah"^|find /v "1394"') do set LANtmp2=%%i 
04.
 
05.
	set LAN1=%LANtmp1:"=% 
06.
	set LAN2=%LANtmp2:"=% 
07.
	echo. 
08.
	echo NIC = %LAN1% 
09.
	echo. 
10.
	@echo ############################################## 
11.
	@Echo Festlegen des primaeren DNS-Server 10.16.2.222 
12.
	@echo ############################################## 
13.
	netsh interface ip set dns name="%LAN1%" static 10.16.2.222>nul 
14.
	netsh interface ip set dns name="%LAN2%" static 10.16.2.222 
15.
  
16.
	@echo ################################################ 
17.
	@echo Festlegen des sekundaeren DNS-Server 10.16.2.223 
18.
	@echo ################################################ 
19.
	netsh interface ip add dns name="%LAN1%" 10.16.2.223>nul 
20.
	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?

Mit freundlichen Grüßen
Marcel
Mitglied: bastla
18.02.2011 um 09:49 Uhr
Hallo eTh0-R!

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"
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
Bitte warten ..
Mitglied: eTh0-R
18.02.2011 um 10:24 Uhr
Außer einem fetten DANKE bleibt mir da nicht weiteres zu sagen.

Tut was es soll....


Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Biber
18.02.2011 um 12:01 Uhr
Moin eTh0-R,

Zitat von eTh0-R:
Außer einem fetten DANKE bleibt mir da nicht weiteres zu sagen.
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
Bitte warten ..
Mitglied: benpunkt
27.09.2011 um 14:37 Uhr
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?
Bitte warten ..
Mitglied: bastla
27.09.2011 um 14:44 Uhr
Hallo Ben.it!

Du hast die entsprechende Zeile als Teil eines Batches verwendet?

Grüße
bastla
Bitte warten ..
Mitglied: benpunkt
27.09.2011 um 14:47 Uhr
Erstmal habe ich einfach die Zeile einzeln eingegeben:
for /f "tokens=3*" %%i in ('netsh interface ip show config^|find """"^|find /v "Drah"^|find /v "1394"') do set "LANtmp2=%%~j"

Mit der Meldung: %%i kann syntaktisch an dieser Stelle nicht verarbeitet werden.
Bitte warten ..
Mitglied: bastla
27.09.2011 um 14:57 Uhr
Hallo Ben.it!

Direkt in der CMD-Shell für die Schleifenvariablen immer einzelne Prozentzeichen verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: benpunkt
27.09.2011 um 15:08 Uhr
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
Bitte warten ..
Mitglied: bastla
27.09.2011 um 15:16 Uhr
Hallo Ben.it!

Gibt es einen besonderen Grund dafür (nein, nicht dass Du keine Code-Formatierung benutzt), zuerst die Anführungszeichen um die Namen herum entfernen zu wollen, um sie dann bei
... name="%LAN1%" ...
wieder zu setzen?

Grüße
bastla
Bitte warten ..
Mitglied: benpunkt
27.09.2011 um 15:17 Uhr
ähm, nein... ich habe es vom eTh0-R abkopiert und angepasst...
Bitte warten ..
Mitglied: benpunkt
27.09.2011 um 15:19 Uhr
wie gesagt... mir gehts nur darum, dass ich alle Client Netzwerkkarten auf DHCP stellen kann, unabhängig davon, wie die Scchnittstelle heißt...
Bitte warten ..
Mitglied: bastla
27.09.2011 um 15:24 Uhr
Hallo Ben.it!

Dann sollte doch eigentlich etwas in der Art genügen:
01.
for /f "tokens=3*" %%i in ('netsh interface ip show config^|find """"^|find /v "Drah"^|find /v "1394"') do ( 
02.
    echo netsh interface ip set address name=%%~j source=dhcp 
03.
)
Das "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]
Bitte warten ..
Mitglied: benpunkt
27.09.2011 um 15:30 Uhr
wenn ich die Batch ausführe, wird das Fenster gleich wieder geschlossen, auch wenn ich sie als Administrator ausführe....
ich bin lokaler Admin auf meinem PC

Funktioniert dass dann auch bei zwei Netzwerkkarten? Wenn ein Mitarbeiter mit einem Laptob arbeitet (LAN/WLAN?)

Grüße
Bitte warten ..
Mitglied: bastla
27.09.2011 um 15:34 Uhr
Hallo Ben.it!

Vorher testetst Du (richtiger Weise) in der CMD-Shell, und jetzt per Doppelklick? Dann füge eben noch eine Zeile
pause
hinzu ...
Funktioniert dass dann auch bei zwei Netzwerkkarten?
Wenn "netsh" Ausgaben für beide liefert ...

Grüße
bastla
Bitte warten ..
Mitglied: benpunkt
27.09.2011 um 15:50 Uhr
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
Bitte warten ..
Mitglied: benpunkt
27.09.2011 um 15:52 Uhr
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
Bitte warten ..
Mitglied: bastla
27.09.2011, aktualisiert 18.10.2012
Hallo Ben.it!
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
Bitte warten ..
Mitglied: benpunkt
27.09.2011 um 16:21 Uhr
Wir kommen hier nicht weiter. Ich schau weiter nach einer Lösung.

Schönen Tag noch!

Grüße
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
gelöst Selected Gridview Value in Variable schreiben (4)

Frage von reissaus73 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...