oleg0815
Goto Top

Batchabfrage

Hallo zusammen,
ich hänge seit 2 Tagen an einer Batchdatei (*.cmd) die für ein anderes Projekt nutzten will.
Zum Aufbau der Batch
1. Es wird die MAC Adresse vom Client aufgelesen
2. Im Anschluss soll geprüft werden ob es die MAC Adresse in einer Textdatei gibt und der Wert an der 5 Stelle wird ausgelesen und dann an den entsprechenden Punkt springen.

Soweit klappt dieses auch, aber wenn er die MAC nicht findet bricht es einfach ab und ich weiß nicht mehr wo ich ansetzen soll.
Alles was ich bis dato über google oder der suche gefunden habe, brachten mich nicht weiter oder verwirten mich nur noch mehr.

Die Textdatei ist wir folgt aufgebaut und wurde mit dem Editor erstellt.

00:01:02:03:04:05;Wert1;Wert2;Wert4;Wert5
00:01:02:03:04:06;Wert1;Wert2;Wert4;Wert5
00:01:02:03:04:07;Wert1;Wert2;Wert4;Wert5
00:01:02:03:04:08;Wert1;Wert2;Wert4;Wert5

Die Batch (CM) ist wie folgt aufgebaut.

for /f "Tokens=1 skip=3" %%a in ('getmac') do set MAC=%%a
set MAC=%MAC:-=:%
for /f "Tokens=5 delims=;" %%b in ('findstr %MAC% "<Pfad zu Datei\Dateiname.txt>"') do set "NEU=%%b"
If %NEU%==1 (
GOTO ALT
) else (
GOTO REC
)

:ALT
Echo Alle OK
GOTO Ende

:REC
Echo Neuinstallation %MAC%

Er soll, wenn er die MAC nicht findet einfach zum Punkt :REC springen, aber irgendwie bekomme ich das nicht hin.

Wenn jemand eine entsprechende Idee oder Anregung hat, wäre ich dankbar.

Die Batch soll dann ein ein bootmenü mit aufgenommen werden und wenn die MAC nicht vorhanden ist oder einen bestimmten Wert an der 5 Stelle hat automatisch den PXE boot auslösen ansonsten von der Platte booten.
Das ist aber ein anderes Projekt, was ich dann in Angriff nehme, wenn dieses steht.

Danke für eure Hilfe

Content-Key: 579866

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

Printed on: April 27, 2024 at 23:04 o'clock

Mitglied: 144260
144260 Jun 17, 2020 at 11:07:08 (UTC)
Goto Top
@echo off
set "csv=<Pfad zu Datei\Dateiname.txt>"  
for /f "tokens=1" %%a in ('getmac /NH') do set "MAC=%%a"  
findstr /iblc:"%MAC%" "%csv%" >nul 2>&1 || goto :REC  
for /f "tokens=5 delims=;" %%a in ('findstr /iblc:"%MAC%" "%csv%"') do (if "%%a" NEQ "1" goto :REC)  
echo Alle OK
goto :eof
:REC
echo Neuinstallation %MAC%
Member: oleg0815
oleg0815 Jun 17, 2020 at 16:25:19 (UTC)
Goto Top
Hallo killpid,
danke für die schnelle Lösung, hat wunderbar geklappt.
Ich habe nach getmac diese noch mit set MAC=%MAC:-=:" umgewandelt.

Läuft nun perfekt und ich kann mich an das andere größere Projekt starten.

Morgen werde ich mal entsprechend das genauer ansehen um es besser zu verstehen, aber im groben passiert folgendes.

1. Es wird die MAC ausgelesen und in ein Variable geschrieben.
2. Nun wird geprüft ob die MAC in der Datei vorkommt und wenn nicht springt er zu dem Punkt :REC
3. Jetzt wird der 5 Token auf den Wert 1 NEQ "1" geprüft und wenn das zutrifft Springt er ebenfalls zu :REC

Ansonsten geht die Batch weiter und Sprint zu :EOF und wird beendet.

Auf das zweimal prüfen wäre ich nicht gekommen.