sambucadrinker
Goto Top

MAC-Adresse fortlaufend ausgeben

Hallo!

Benötige eure Hilfe, da ich nichts passendes bei Google gefunden habe.

Unser Lieferant baut und programmiert MAC-Adressen für uns.
Da der nicht mit Hexadezimalzahlungssytem vertraut ist, benötige ich einen Batch-Script für Windows OS, welcher mir fortlaufende MAC-Adressen fortlaufend durchzählt und in einen Textdokument von gewünschte Anzahl aus weiterzählt und abspeichert.

Habe leider noch nie was mit Hexadezimalzahlen gemacht. Zählen kann ich aber face-smile

Beispiel:
Geben Sie zuletzt verwendete MAC-Adresse 00:1D:60:4A:<X>:<X> (letzte zwei Stellen):
-> Eingabe: 35:01

Anzahl gebaute Platinen:
->Eingabe: 17

Resultat im Textdocument
1. 00:1D:60:4A:35:02
2. 00:1D:60:4A:35:03
3. 00:1D:60:4A:35:04
4. 00:1D:60:4A:35:05
5. 00:1D:60:4A:35:06
6. 00:1D:60:4A:35:07
7. 00:1D:60:4A:35:08
8. 00:1D:60:4A:35:09
9. 00:1D:60:4A:35:0A
10. 00:1D:60:4A:35:0B
11. 00:1D:60:4A:35:0C
12. 00:1D:60:4A:35:0D
14. 00:1D:60:4A:35:0E
15. 00:1D:60:4A:35:0F
16. 00:1D:60:4A:35:10
17. 00:1D:60:4A:35:11

Content-Key: 53955497144

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

Printed on: May 11, 2024 at 16:05 o'clock

Member: MirkoKR
MirkoKR Feb 02, 2024 updated at 15:19:52 (UTC)
Goto Top
OK

Erstmal: die genannten Mac sind für ASUStek reserviert ...
Member: em-pie
em-pie Feb 02, 2024 at 15:51:21 (UTC)
Goto Top
Moin,

Nimm doch grundsätzlich einfach Excel:

In B2 die zu letzt verwendete MAC und ab B3 dann die Umrechnung

HEXINDEZ()
DEZINHEX()

Erstmal: die genannten Mac sind für ASUStek reserviert ...
Das solltet ihr berücksichtigen…
Member: Sambucadrinker
Sambucadrinker Feb 02, 2024 at 16:00:11 (UTC)
Goto Top
Zitat von @em-pie:

Moin,

Nimm doch grundsätzlich einfach Excel:

Dankeschön für den Tipp.
Excell ist die einfachster Instrument.


Erstmal: die genannten Mac sind für ASUStek reserviert ...
Das solltet ihr berücksichtigen…

Ich will hier MAC-Adressen von uns nicht hinschreiben ;)
Mitglied: 11078840001
11078840001 Feb 02, 2024 updated at 16:25:35 (UTC)
Goto Top
# mac prefix
$macprefix = '00:1D:60:4A:'  
# Ausgabedatei
$outfile = '.\macs.txt'  
do{
    $suffix = Read-Host "Geben Sie zuletzt verwendete MAC-Adresse 00:1D:60:4A:<XX>:<XX> (letzte zwei Stellen)"  
}until($suffix -match '^[a-f0-9]{2}:[a-f0-9]{2}$')  
$numparts = 0
do{
    $num = Read-Host "Anzahl gebauter Platinen eingeben"  
}until([int]::TryParse($num,[ref]$numparts) -and $numparts -gt 0 -and $numparts -le 0xFFFF )

$dec = [Convert]::ToInt64("$macprefix$suffix".replace(':',''),16) + 1  
1..$numparts | %{
    [regex]::matches($dec.ToString('X').padleft(12,'0'),'..').Value -join ':'  
    $dec++
} | set-content $outfile
Member: Sambucadrinker
Sambucadrinker Feb 02, 2024 at 20:01:35 (UTC)
Goto Top
Zitat von @abamakabra:

Voll Cool. Dankeshön. Genau das was ich brauche.
Mit batch wäre noch geiler, aber ich könnte es zu *.exe Datei leichter umschreiben.

Aber eventuell hilft mir dabei ChatGPT face-smile
Member: ITwissen
Solution ITwissen Feb 03, 2024 at 08:10:02 (UTC)
Goto Top
Mit ein paar "Tricks" geht das auch in Windows Batch.
Die Prüfung ob die Eingabe Sinn macht habe ich weggelassen.

@echo off
setlocal

set base=00:1D:00:4A
set /p base=Eingabe Base MAC (%base%): 
set start=ff:f0
set /p start=Eingabe Start MAC (%start%): 
set count=20
set /p count=Eingabe Zahl der Platinen (%count%): 

set mac=%base::=%%start::=%
set smac=%mac:~0,4%
set /A dmac=0x%mac:~-8%
for /L %%a in (1,1,%count%) do call :calcmac %%a
exit /b

:calcmac
set /A cmac=%dmac%+%~1
cmd /c exit %cmac%
set nmac=%=ExitCode%
echo %~1. %smac:~0,2%:%smac:~2,2%:%nmac:~0,2%:%nmac:~2,2%:%nmac:~4,2%:%nmac:~6,2%
exit /b

Beispielausgabe:
Eingabe Base MAC (00:1D:00:4A):
Eingabe Start MAC (ff:f0):
Eingabe Zahl der Platinen (20):
1. 00:1D:00:4A:FF:F1
2. 00:1D:00:4A:FF:F2
3. 00:1D:00:4A:FF:F3
4. 00:1D:00:4A:FF:F4
5. 00:1D:00:4A:FF:F5
6. 00:1D:00:4A:FF:F6
7. 00:1D:00:4A:FF:F7
8. 00:1D:00:4A:FF:F8
9. 00:1D:00:4A:FF:F9
10. 00:1D:00:4A:FF:FA
11. 00:1D:00:4A:FF:FB
12. 00:1D:00:4A:FF:FC
13. 00:1D:00:4A:FF:FD
14. 00:1D:00:4A:FF:FE
15. 00:1D:00:4A:FF:FF
16. 00:1D:00:4B:00:00
17. 00:1D:00:4B:00:01
18. 00:1D:00:4B:00:02
19. 00:1D:00:4B:00:03
20. 00:1D:00:4B:00:04