casper2k
Goto Top

Aus Text File bestimmte Daten ausschneiden

Hallo Leute,

ich stehe gerade auf dem Schlauch und komme einfach nicht weiter.

Ich benötige für ein weiteres Batchfile die MAC Adressen meines Servers.

Ich gehe also zuerst hin und lasse mir per
ipconfig /all |findstr /i /C:"Physical Address" >>%LOG%
die MAC Adressen in ein Logfile schreiben.

Leider wird mir aber die komplette Zeile ins Logfile geschrieben

z.B. "Physical Address. . . . . . . . . : XX-XX-XX-XX-XX-XX"

Ich benötige aber eigentlich nur die MAC Adresse, also z.B.:

XX-XX-XX-XX-XX-XX

Leider weiss ich nicht wie ich dies bewerkstelligen kann.

Hat hier jemand eine Idee für mich?

cu
Casper2k

Content-Key: 70231

Url: https://administrator.de/contentid/70231

Ausgedruckt am: 29.03.2024 um 00:03 Uhr

Mitglied: bastla
bastla 05.10.2007 um 14:15:16 Uhr
Goto Top
Hallo Casper2k und willkommen im Forum!

Du könntest es so versuchen:
@echo off & setlocal
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /c:"Physikalische Adresse"') do for /f %%m in ('echo %%i') do set MAC=%%m  
echo %MAC%
Das zweite "for" dient dem Entfernen der Leerstelle vor der MAC-Adresse - falls diese nicht stören sollte, genügt auch:
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /c:"Physikalische Adresse"') do set MAC=%%i  

Grüße
bastla

[Edit] Fehlendes %-Zeichen bei "echo %%i" nachgetragen. [/Edit]
Mitglied: paulepank
paulepank 05.10.2007 um 14:22:43 Uhr
Goto Top
Hallo Casper2k,

Alternative zu Bastla

folgendes in der cmd ausprobieren:
for /f %i in ('getmac /nh') do @echo %i  
Für eine Batch dementsprechend % in %% ändern und die Ausgabe anpassen.

cu paulepank
Mitglied: Casper2k
Casper2k 05.10.2007 um 14:34:10 Uhr
Goto Top
Danke euch beiden.

bastla, dein String tut irgendwie nicht. bei mir wirft er das gleiche raus. das echo gibt
dann auch wieder "Physical Address..." aus. ich würde das eigentlich ohne "Physical..."
brauchen. eventuell mach ich auch was falsch?...

Paulepank, dein String ist eigentlich genau das was ich brauche, leider ist eine LAN Karte
disabled und das schreibt er mir auch ins Log. dort steht dann "disabled". wenn ich natürlich
nur die ersten 2 zeilen weiterverarbeiten könnte wäre das egal. aber wie kann ich mir dann
zeile1 als variable1 und zeile2 als variable2 rausziehen?
Mitglied: bastla
bastla 05.10.2007 um 14:58:24 Uhr
Goto Top
Hallo Casper2k!

Beim "echo %%i" hatte ich nur ein %-Zeichen - ist oben schon korrigiert.
... dort steht dann "disabled".
Falls es Dir genügt, das "disabled" zu vermeiden, könnte es so gehen:
for /f %i in ('getmac /nh^|findstr /v "disabled"') do @echo %i  

Grüße
bastla

P.S.: Mir gefällt paulepank's Lösung besser ...
Mitglied: bastla
bastla 05.10.2007 um 15:04:59 Uhr
Goto Top
... Nachtrag: Wenn Du die Adressen in Variablen haben willst, dann etwa so:
@echo off & setlocal enabledelayedexpansion
set /a n=1
for /f %%i in ('getmac /nh^|findstr /v "disabled"') do (  
	set var!n!=%%i
	set /a n+=1
)
set var
Das "set var" steht natürlich nur zu Demozwecken dabei.

Grüße
bastla
Mitglied: Casper2k
Casper2k 08.10.2007 um 09:27:18 Uhr
Goto Top
Hi bastla,

das hilft mir sehr weiter! hab jetzt alles hingebogen das es funktioniert, allerdings
gibts noch ein problem bei den ausgegebenen variablen.

die mac adresse wird im format XX-XX-XX-XX... ausgegeben. Das Programm an welches
ich die variablen übergebe benötigt aber die MAC Adresse ohne "-" also z.B. XXXXXXXX...

Hast du ne Idee wie ich das bewerkstelligen kann?

thx
Casper2k
Mitglied: paulepank
paulepank 08.10.2007 um 10:37:05 Uhr
Goto Top
moin,

du kannst diesen Code ergänzen

@echo off & setlocal enabledelayedexpansion
set /a n=1
for /f %%i in ('getmac /nh^|findstr /v "disabled"^|tr -d "-"') do (  
	set var!n!=%%i
	set /a n+=1
)
set var

Das Programm tr.exe kannst du dir aus dem Paket unxutils herausziehen und in deinen System32-Ordner kopieren.

Alternativ kannst du auch warten bis Bastla Langeweile hat.

P.S. was fällt dir Morgen ein ?

cu paulepank
Mitglied: Biber
Biber 08.10.2007 um 11:02:42 Uhr
Goto Top
Oder, ohne Dritt-Utilities...
@echo off & setlocal enabledelayedexpansion
set /a n=1
for /f %%i in ('getmac /nh^|findstr /v "disabled"') do (  
        set Var=%%i
	set "var!n!=!var:-=!"  
	set /a n+=1
)
set var

Grüße
Biber
Mitglied: Casper2k
Casper2k 08.10.2007 um 12:19:58 Uhr
Goto Top
Danke dir Biber! Das wars...

Muss gestehen, das ich in der for Schleife nicht mehr wirklich durchblicke. Hätte
das nie alleine hinbekommen!