Top-Themen

Aktuelle Themen (A bis Z)

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 Batch Script auslesen von einer Mac Addresse unter XP geht es unter W7 nicht

Mitglied: nixis22

nixis22 (Level 1) - Jetzt verbinden

20.01.2011 um 18:11 Uhr, 7405 Aufrufe, 16 Kommentare

Hallo,
ich habe ein Batch Script welches unter XP die MAC Adresse abfragt, die Abfrage findet in einer FOR /F Schleife statt, unter Windows XP funktioniert dies ohne Probleme unter Windows 7 geht dies zwar auch, aber bevor das Script beendet wird wird die Varieble %MACA% durch set MACA= überschrieben.

Hallo Administrator Team,
ich hab schon ziemlich lange nach dem Problem hier im Forum gesucht, und hoffe dennoch das ich keinen Doppelpost führe.

Die MAC Addressen habe ich am Ende mit zwei ** verfälscht, also bitte nicht als Fehler ansehen

Wie im Vorwort beschrieben funktioniert das Script unter XP ohne Probleme:

01.
FOR /F "skip=1 tokens=1-6 delims=: " %%a in ('WMIC NIC WHERE "NetConnectionStatus='2' and NetConnectionID='LAN-Verbindung'" GET MACAddress') do set MACA=%%a%%b%%c%%d%%e%%f 
02.
echo %MACA% 
03.
pause
Es ist relativ simpel gehalten aber es tut seine Dienste.
Unter XP wird mir dann also ECHO die MAC Adresse ohne ":" ausgegeben.

Wenn ich dieses Script nun unter Windows 7 laufe lasse findet er auch die MAC, trennt per DELIMS die Doppepunkte heraus und fügt die MAC in die Variable %MACA% ein, aber nachdem er die MAC in die Variable geschrieben hat folg ein "MACA=" und dann ist diese ja sozusagen wieder leer, und hier weis ich absolut nicht wieso.

Hier die Script Outputs in der Konsole mit @echo on:

XP:
01.
C:\WINNT>FOR /F "skip=1 tokens=1-6 delims=: " %a in ('WMIC NIC WHERE "Ne 
02.
tConnectionStatus='2' and NetConnectionID='LAN-Verbindung'" GET MACAddress') do 
03.
set MACA=%a%b%c%d%e%f 
04.
 
05.
C:\WINNT>set MACA=001C42E75E** 
06.
 
07.
C:\WINNT>echo 001C42E75E** 
08.
001C42E75E** 
09.
 
10.
C:\WINNT>pause 
11.
Drücken Sie eine beliebige Taste . . .
W7:
01.
C:\Windows>FOR /F "skip=1 tokens=1-6 delims=: " %a in ('WMIC NIC WHERE " 
02.
NetConnectionStatus='2' and NetConnectionID='LAN-Verbindung'" GET MACAddress') d 
03.
o set MACA=%a%b%c%d%e%f 
04.
 
05.
C:\Windows>set MACA=001C42A04F** 
06.
 
07.
 :\Windows>set MACA= 
08.
 
09.
C:\Windows>echo 
10.
ECHO ist eingeschaltet (ON). 
11.
 
12.
C:\Windows>pause 
13.
Dr??n Sie eine beliebige Taste . . .
Wie man sehr gut in Zeile 7 sehen kann ist hier das " :\Windows>set MACA=" zuviel und macht die Varieblae wieder leer

Kann hier jemand Helfen? Ich weis wirklich nicht mehr weiter wieso bei W7 das zweite set stattfindet.

Danke und Gruß aus Köln

Philipp
Mitglied: Biber
20.01.2011 um 18:38 Uhr
Moin nixis22,

willkommen im Forum.
Um nachfolgenden Kommentaren etwas die Schärfe zu nehmen, drei Tipps.

a) ersetze in den Skripten, nein in dem EINEN Skript das [set MACA=%a%b%c%d%e%f ] durch ein [if not defined MACA set MACA=%a%b%c%d%e%f ]
b) verwende niemals Oneliner, bei denen du die erste Zeile nicht verstehst
c) Informiere dich, wie du die Ausgabe des Befehls
WMIC NIC WHERE "NetConnectionStatus='2' and NetConnectionID='LAN-Verbindung'" GET MACAddress
... auf Win Xp und Win 7 mal auf ein CMD-Fenster projezieren kannst.

Möglicherweise kommt gleich noch ein Kollege namens T-Mo hier vorbei und erklärt es ausführlich.

Grüße
Biber
Bitte warten ..
Mitglied: nixis22
20.01.2011 um 19:13 Uhr
Hallo Biber,
danke für deine Antwort.

Ich versuche es aus meiner Sicht wie ich es zur Zeit verstehe mal zu erklären, wenn ich auf demHolzweg bin lasse ich gerne korrigieren.

WMIC NIC WHERE \"NetConnectionStatus=\'2\' and NetConnectionID=\'LAN-Verbindung\'\" GET MACAddress

Ergibt:
MACAddress
xx:yy:xx:yy:xx:yy
weil:
NetConnectionStatus=\'2\' -> aktive Netzwerkkarte
NetConnectionID=\'LAN-Verbindung -> DIe Netzwerkkarte mit dem Namen [Lan-Verbindung]
GET MACAddress -> holt den Wert mit der MAC Adresse

Mit der FOR Schleife
[Skip=1] lasse ich die erste Zeile weg
[Tokens=1-6] und [delims=:] schreibe ich die Werte zwischen den : in die Variabeln %a bis %f die Doppelpunkte werden dabei gelöscht.

das Ersetzen von [set MACA=%a%b%c%d%e%f ] in [if not defined MACA set MACA=%a%b%c%d%e%f ] erzielt das selbe Ergebnis nur das in (Zeile 7) statt [set] nun [if not defined MACA set MACA=] da steht.

Philipp
Bitte warten ..
Mitglied: bastla
20.01.2011 um 19:21 Uhr
das Ersetzen von [set MACA=%a%b%c%d%e%f ] in [if not defined MACA set MACA=%a%b%c%d%e%f ] erzielt das selbe Ergebnis nur das in (Zeile 7) statt [set] nun [if not defined MACA set MACA=] da steht
... wobei aber noch die Schlussfolgerung daraus fehlt (dann hättest Du nämlich den "jumping point" gefunden ) ...
Ansonsten könntest Du natürlich auch zB mit
FOR /F "tokens=1-6 delims=: " %%a in ('WMIC NIC WHERE "NetConnectionStatus='2' and NetConnectionID='LAN-Verbindung'" GET MACAddress^|findstr ":"') do set MACA=%%a%%b%%c%%d%%e%%f 
die Klippe umschiffen.

Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
20.01.2011 um 19:56 Uhr
moin nixis22,

Ergibt:
MACAddress
xx:yy:xx:yy:xx:yy
weil:
Ergibt es eben nicht!
Windows 7 ist ja nicht nur "Besser" gemacht - sondern ganz und gar anders gestrickt.

im Zweifelsfall solltest Du erstmal die genaue Ausgabe des "WMIC ..." Überprüfen, indem Du an diesen Befehl ein "& echo Ausgabe fertig..." dranhägst und in der CMD ausführst.
Dann siehst Du die angehängte LehrLeerzeile, welche in Redmond als Feature extra für Win 7 in die Ausgabe reingebastelt wurde.

Gruß Phil
Bitte warten ..
Mitglied: bastla
20.01.2011 um 20:02 Uhr
Dann siehst Du die angehängte LehrLeerzeile, welche in Redmond als Feature extra für Win 7 in die Ausgabe reingebastelt wurde.
... "Feature", weil wir damit endlich wieder mal was zum "Drumrumbasteln" haben ...

Grüße
bastla
Bitte warten ..
Mitglied: 60730
20.01.2011 um 20:36 Uhr
Salü,
Zitat von Biber:
Moin nixis22,

willkommen im Forum.
Möglicherweise kommt gleich noch ein Kollege namens T-Mo hier vorbei und erklärt es ausführlich.
[OT]
Möglicherweise kommt es anders, als man denkt..^Merci 4 die Blumen trotzdem
[/OT]

demo an cmd Prompt:
C:\>FOR /F "skip=1 tokens=1-6 delims=: " %a in ('WMIC NIC WHERE "NetConnectionSt 
atus='2' and NetConnectionID='LAN-Verbindung'" GET MACAddress') do set MACA=%a%b 
%c%d%e%f 
MOF-Datei(en) konnte(n) nicht registriert werden.
Nur Mitglieder der Administratorgruppe können WMIC.EXE verwenden.
Ursache:Win32-Fehler: Zugriff verweigert


Von daher würde ich den bezeichneten Weg gar nicht gehen wollen.
edit
  • hüstel
  • Die bis gerade eben noch beschriebene Demo war ein Satz mit X.....
/edit

Gruß
Bitte warten ..
Mitglied: nixis22
20.01.2011 um 21:10 Uhr
Hallo zusammen,
wow viele Antworten in einer kleinen Zeitspanne, danke!

Ja Windows 7 ist wirklich besser geworden.

Das Leerzeile ist mir wirklich erst aufgefallen als ich die Antwort von pieh-ejdsch gelesen hatte, nur stellt sich mir grad die Frage wie ich die Leerzeile (die mir wirklich wie eine böse Lehrzeile [nicht vertippt] vorkommt) wieder wegbekomme?
Ich hab mir auch eben beim Essen überlegt was die neu eingeführte Leerzeile für eienn Sinn haben sollte, ausser das man wieder etwas drum herum Basteln muss um diese weg zu bekommen.

Die Lösung von TimoBeil habe ich mir eben auch durchgelesen aber ich möchte dann doch erst mal bei dem bleiben womit ich euch seit dem ersten Beitrag auf den "Nerv" gehe, hoffe das iost OK.
Bitte warten ..
Mitglied: pieh-ejdsch
20.01.2011 um 21:19 Uhr
moin Timo,

das komische ist; dass es in einer Batch, welche bei mir rumdümpelte, richtig funktionierte mit der Arp-Ausgabe.

schreib ich ne neue Batch (ist aber genauso eine .cmd wie die andere) dann geht es nicht!? Kopfkratz...?

[Edit]
Komentar hinfällig, da die Mac-Adresse in der genannten Batch mittels "ipconfig /all" ausgelesen wurde.
Man - Ich werd alt!
[/Edit]

Gruß Phil
Bitte warten ..
Mitglied: Friemler
20.01.2011 um 23:20 Uhr
Hallo nixis22,

bastla hat ja schon eine Methode vorgestellt, um Dein Problem zu lösen (die Ausgabe von WMIC über eine Pipe an FINDSTR weiterleiten, was dann nur noch Zeilen anzeigt, die Doppelpunkte enthalten -> die Zeile mit der MAC-Adresse; SKIP=1 muss dann weggelassen werden).

Ich habe gerade auch etwas herum experimentiert. Das Problem scheint zu sein, dass WMIC eigentlich Daten im Unicode-Format ausgibt. Zumindest tut es das, wenn man die Ausgabe mit dem Parameter /OUTPUT:Datei oder mit >Datei in eine Datei umleitet (bei /OUTPUT:CON sieht man sogar, das Multibyte-Zeichen und am Anfang eine Byte Order Mark [BOM] für UTF-16 LE ausgegeben werden!). In dieser Datei ist auch die zusätzliche Leerzeile nicht zu finden. Anscheinend hat CMD eine interne Konvertierungsroutine für Unicode-Ausgaben, die nicht richtig funktioniert und eine Zeile erzeugt, die nicht mit einem Standard-Zeilenende (CR+LF) sondern nur mit CR endet. Deshalb ist die zweite Ausgabe des SET-Befehls am Anfang auch verstümmelt (der Laufwerksbuchstabe des Prompts fehlt ja). FOR erkennt das nicht als leere Zeile und führt den Schleifenkörper zweimal aus.

Der TYPE-Befehl kann auch Unicode-Dateien in ASCII wandeln, sodass sie auf der Kommandozeile korrekt angezeigt werden. Folgender Befehl liefert auch das richtige Ergebnis:
FOR /F "skip=1 tokens=1-6 delims=: " %a in ('WMIC /Output:wmicout.txt NIC WHERE "NetConnectionStatus='2' and NetConnectionID='LAN-Verbindung'" GET MACAddress ^& type wmicout.txt ^& del wmicout.txt') do set maca=%a%b%c%d%e%f
Offen gesagt gefällt mir aber bastla's Lösung besser.

Gruß
Friemler
Bitte warten ..
Mitglied: bastla
20.01.2011 um 23:56 Uhr
... und wollen wir auch nicht außer Acht lassen, dass natürlich Bibers (von nixis22 - BTW: Willkommen im Forum! - noch nicht vollständig reflektierter) Ansatz bereits macht, was er soll ...

Grüße
bastla
Bitte warten ..
Mitglied: Friemler
21.01.2011 um 00:01 Uhr
Richtig! Hatte ich vergessen.

@Biber: Sorry!

Gruß
Friemler
Bitte warten ..
Mitglied: 76109
21.01.2011 um 00:04 Uhr
Hallo @All

Die Ausgabe von WMIC ist Unicode und die Forschleife gibt das hier aus:
MACAddress + CR + CR + LF
6B:xx:xx:xx:D4 + CR + LF

Gruß Dieter
Bitte warten ..
Mitglied: Friemler
21.01.2011 um 00:15 Uhr
Hallo Dieter,

nein, Unicode ist es nicht, aber der Murks, den Deine Forschungen an den Tag gebracht haben, ist wahrscheinlich das Ergebnis einer Konvertierung Unicode->ASCII seitens CMD, evtl. auch WMIC selbst. In einer Datei, die durch /OUTPUT:Datei oder >Datei erzeugt wurde (dann im Unicode-Format), ist kein zusätzliches CR zu finden.

Gruß
Friemler
Bitte warten ..
Mitglied: 76109
21.01.2011 um 00:18 Uhr
Hallo Friemler!

Also im Hex-Editor stehen in den ersten beiden Bytes FF FE (Unicode, UTF16?). Ob das jetzt die CMD so hinbiegt, keine Ahnung?

Gruß Dieter
Bitte warten ..
Mitglied: Friemler
21.01.2011 um 00:25 Uhr
Hallo Dieter,

richtig, das FF FE ist die Byte Order Mark (BOM) für UTF-16 Little Endian (für Big Endian wäre es FE FF, für UTF-8 EF BB BF). Daran können Texteditoren erkennen, dass es sich um eine entsprechend codierte Unicode-Datei handelt. Na ja, und irgendwer muss die Konvertierung bei Ausgabe auf der Konsole ja machen, CMD oder WMIC selbst. Einer der beiden baut Mist.

Gruß
Friemler
Bitte warten ..
Mitglied: nixis22
22.01.2011 um 11:07 Uhr
Hallo zusammen,
vielen Dank das ihr mir hier weitergeholfen habt, und ich hab mal wieder gelernt das man noch mehr auf die "Noten" gucken muss um den Fehler zu finden der einem ja fast anspringt.

DIe Lösung von Friemler hab ich nun genommen und diese klappt super! Trotzdem noch mal Danke an alle!

Wünsche euch ein schönes Wochenende.

Philipp
Bitte warten ..
Ähnliche Inhalte
Windows Netzwerk

Ist die X802.1x MAC Address Authorization ein Sicherheitsrisiko

Frage von lcer00Windows Netzwerk2 Kommentare

Hallo , kurze Frage: und diverse Anleitungen im Netz: Um eine MAC Address Authorization mit Windows Server & NPS ...

LAN, WAN, Wireless

Cisco DHCP Reservierung mit MAC Addresse

gelöst Frage von PharITLAN, WAN, Wireless4 Kommentare

Hallo allerseits, ich habe bereits das Internet rauf und runter gesucht, aber leider finde ich überall nur Anleitungen, die ...

Hyper-V

Hyper - V VM mit statischer MAC Addresse

Frage von HansWurstAugustHyper-V4 Kommentare

Hallo zusammen, morgen migriere ich eine Hyper-V VM (2008R2 VM, läuft auf 2012 R2 Hyper-V Host) auf einen anderne ...

Windows XP

Ehemalige W7-HDD für XP "fit" machen

gelöst Frage von cardischWindows XP6 Kommentare

Hi@all, ich bereite gerade ein paar alte (um P4/Core2Duo) PCs für XP auf, da eine unserer Anwendungen nur XP ...

Neue Wissensbeiträge
Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 4 StundenWindows Update

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Microsoft Office

MS Office 2019 ohne OneNote - OneNote App speichert nur in Cloud

Information von Deepsys vor 15 StundenMicrosoft Office2 Kommentare

Microsoft zeigt deutlich wohin alles bei Ihnen geht, OneNote 2019 wird es nicht mehr geben, und die Windows 10 ...

Humor (lol)

Warum man sein Gast-WLAN nicht beliebig nennen sollte

Erfahrungsbericht von Henere vor 1 TagHumor (lol)5 Kommentare

Servus, mal was aus dem Alltag. Zu Hause. Eigentlich wollte ich nur einen weiteren WLAN-AP ins Netz bringen, damit ...

Sicherheit

Schwachstelle in Intel SPI Flash Firmware kann manipuliert werden

Information von sabines vor 2 TagenSicherheit

Es existiert ein Problem in einigen Intel Chipsätzen, das durch einen lokalen Angreifer genutzt werden könnte. Die Firmware befindet ...

Heiß diskutierte Inhalte
Off Topic
1st , 2nd Level Support Techniker - Patchfeld und Switche etc.
Frage von pixel0815Off Topic30 Kommentare

Moin zusammen, ich weiß gar nicht ob es hier richtig ist, aber mich würde mal interessieren wie ihr das ...

Windows Netzwerk
LAN nur 10MB pro s trotz gb lan
Frage von tsunamiWindows Netzwerk19 Kommentare

Hallo zusammen, ich brauche mal wieder einen Anstoß in die richtige Richtung. Ich habe einen Windows 10 pc mit ...

Festplatten, SSD, Raid
Server SSD: NVMe PCIe 3.0 RAID?
Frage von bouneeFestplatten, SSD, Raid14 Kommentare

Hallo liebe Admins, mir stellt sich gerade die Frage, ob ein neuer Server mit SSD NVMe PCIe 3.0 Sinn ...

Windows 7
Alle Windows Updates Offline installieren
Frage von akadawaWindows 713 Kommentare

Hallo liebe Community, ich habe mehrere Rechner die das Internet schon eine weile nicht gesehen haben und eine menge ...