MAC-Adresse einer bestimmten Netzwerkkarte via Batch auslesen
Hallo,
ich beiße mir gerade an einer Batch-Datei die Zähne aus - ich möchte die MAC-Adresse einer bestimmten Netzwerkkarte via Batch auslesen. Die letzten 6 Zeichen der MAC-Adresse möchte ich dann mit dem Computernamen verknüpfen.
Sind die letzten Zeichen der MAC Adresse zum Beispiel:
AC:F5:0B
sollte der daraus resultierende Computername eben
newname_ACF50B ergeben.
Ich versuchte das zuvor über ipconfig /all zu lösen - bekomme aber Probleme wenn es mehr wie eine Karte im System gibt. Über den Befehl
Set NICName="Intel(R) PRO/100 VE Network Connection"
WMIC NIC WHERE Name=%NICName% GET MACAddress /VALUE
kann ich gezielt den entsprechenden Adapter selektieren. Allerdings bekomme ich keine Ausgabe bzw. funktioniert das ganze noch nicht. Das Ergebnis wir korrekt in einer Behelfsdatei namens MAC.txt gespeichert. Allerdings kann ich über "findstr" den Inhalt nicht abrufen bzw. dann in das gewünschte Ausgabeformat zerlegen (Doppelpunkte entfernen und nur die letzten 6 Zeichen übernehmen) - keine Ahnung wo der Fehler steckt ...
Hoffe Ihr könnt Schützenhilfe leisten
Danke & Grüße
ich beiße mir gerade an einer Batch-Datei die Zähne aus - ich möchte die MAC-Adresse einer bestimmten Netzwerkkarte via Batch auslesen. Die letzten 6 Zeichen der MAC-Adresse möchte ich dann mit dem Computernamen verknüpfen.
Sind die letzten Zeichen der MAC Adresse zum Beispiel:
AC:F5:0B
sollte der daraus resultierende Computername eben
newname_ACF50B ergeben.
Ich versuchte das zuvor über ipconfig /all zu lösen - bekomme aber Probleme wenn es mehr wie eine Karte im System gibt. Über den Befehl
Set NICName="Intel(R) PRO/100 VE Network Connection"
WMIC NIC WHERE Name=%NICName% GET MACAddress /VALUE
kann ich gezielt den entsprechenden Adapter selektieren. Allerdings bekomme ich keine Ausgabe bzw. funktioniert das ganze noch nicht. Das Ergebnis wir korrekt in einer Behelfsdatei namens MAC.txt gespeichert. Allerdings kann ich über "findstr" den Inhalt nicht abrufen bzw. dann in das gewünschte Ausgabeformat zerlegen (Doppelpunkte entfernen und nur die letzten 6 Zeichen übernehmen) - keine Ahnung wo der Fehler steckt ...
@echo off & setlocal enableDelayedExpansion
Set "CName=newname_"
Set NICName="Intel(R) PRO/100 VE Network Connection"
echo %NICName%
WMIC NIC WHERE Name=%NICName% GET MACAddress /VALUE > MAC.txt
for /F "Tokens=4,5,6 Delims=:" %%i in ('findstr /c:"*MACAddress" MAC.txt') do Set newCompName=%CName%%%i%%j%%k
echo %newCompName%
pause
Hoffe Ihr könnt Schützenhilfe leisten
Danke & Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 121727
Url: https://administrator.de/contentid/121727
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Kollisionskurs!
Vielleicht so:
Grüße
bastla
Vielleicht so:
@echo off & setlocal
Set "CName=newname_"
Set "NICName=Intel(R) PRO/100 VE Network Connection"
WMIC NIC WHERE Name="%NICName%" GET MACAddress /VALUE|findstr "MACAddress">MAC.txt
for /F "Tokens=4-6 Delims=:" %%i in (MAC.txt) do Set newCompName=%CName%%%i%%j%%k
echo %newCompName%
bastla
@Destry
Du könntest das auch in der Kurzfassung so formulieren: Die direkte Ausgabe von WMIC erzeugt Unicode, die mit "findstr" gefilterte Version enthält ASCII ...
Wenn schon als Unicode gespeichert, kann eine implizite Konvertierung immer noch mit einem "type" erfolgen - daher würde auch
das gewünschte Ergebnis bringen (zumindest, wenn im "findstr" kein "*" verwendet wird ).
Grüße
bastla
Du könntest das auch in der Kurzfassung so formulieren: Die direkte Ausgabe von WMIC erzeugt Unicode, die mit "findstr" gefilterte Version enthält ASCII ...
Wenn schon als Unicode gespeichert, kann eine implizite Konvertierung immer noch mit einem "type" erfolgen - daher würde auch
type mac.txt|findstr "MACAddress"
Grüße
bastla